1 首先进入场景是隐藏鼠标的,并且限定鼠标在游戏区域移动。当暂停时页面需要显示鼠标方便操作。返回继续游戏时又要隐藏鼠标。储存游戏进度时也需要对鼠标进行如此这般操作。
2 在gamemanager里设置bool参数来设定鼠标的隐藏与否。
在GameManager脚本添加MouseCursor方法,并且在Update里运行
//鼠标显示隐藏
public void MouseCursor()
{
if (isLock)
{
//鼠标限定在 game Window
Cursor.lockState = CursorLockMode.Confined;
Cursor.lockState = CursorLockMode.Locked;
}
else
{
Cursor.lockState = CursorLockMode.None;
}
//设置鼠标样式
//Cursor.SetCursor(cursorTexture, Vector2.zero, CursorMode.Auto);
//按键控制鼠标是否显示
if (Input.GetKeyDown(KeyCode.M))
{
isLock = true;
}
if (Input.GetKeyDown(KeyCode.K))
{
isLock = false;
}
}
但是鼠标在移动之后却不断显示,必须找出原因,原来是另一个脚本在键盘移动的时候指示了鼠标的显示,找出来并制止它!
问题根源很难找啊,好不容易发现了ManoeuvreFPSController脚本下第686行
camController.ToggleCursor(camController.hideCursor);
只要注释掉就不会显示鼠标
就在这时发生了射击异常报错
uzAIZombieStateManager脚本
第505行
if (ZombieHealthStats.fadeZombieMesh)
{
//set all the materials to Fade
foreach (Renderer r in ZombieHealthStats.allRenderers)
{
//assign it to the renderer
//注释掉下面这句
//r.material.shader = ZombieHealthStats.faderMaterial.shader;
}
当储存和读取过后,鼠标又显示出来了,来修改一下控制UI界面的脚本SaveUIController里的Update()就OK没问题了
private void Update()
{
if (isOpen)
{
//鼠标解锁
GameManager._instance.isLock = false;
return;
}
else
{
//鼠标解锁
GameManager._instance.isLock = true;
}
if (ManoeuvreFPSController.Instance.Inputs.pauseInput)
OpenPauseMenuUI();
}