c# - 打开和关闭光标
问题描述
我想做的是有不同的NPC菜单,游戏从关闭光标开始。但是,当您单击 NPC 时,它会重复,因此您可以与 NPC 交谈。
using UnityEngine;
using System.Collections;
public class CursorScript : MonoBehaviour
{
public GameObject merchant;
public GameObject builder;
public bool canTurnMerchantOn;
public bool canTurnBuilderOn;
// Use this for initialization
void Start()
{
//Set Cursor to not be visible
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
if(builder.activeSelf == true && canTurnBuilderOn)
{
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
canTurnMerchantOn = false;
}
if (builder.activeSelf == false)
{
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
canTurnMerchantOn = true;
}
if (merchant.activeSelf == true && canTurnMerchantOn)
{
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
canTurnBuilderOn = false;
}
if (merchant.activeSelf == false)
{
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
canTurnBuilderOn = true;
}
}
}
奇怪的是商人 npc 工作正常,然后建设者 npc 光标闪烁,我不能点击任何东西。
解决方案
问题可能是builder的active self等于true,can turn builder on也是true,代码会打开光标。但这会将罐头打开商人设置为假,这将关闭光标。update 函数每帧调用一次,因此它会反复打开和关闭光标。我建议使用 else if 而不是所有的 if 语句,如果你不想这样,你可以使用 return;。这是代码:
void Update()
{
if(builder.activeSelf == true)
{
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
return;
}
else if (builder.activeSelf == false)
{
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
if (merchant.activeSelf == true)
{
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
return;
}
else if (merchant.activeSelf == false)
{
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
}
因此,您也不需要可以在代码中转换生成器/商人。如果这不起作用,您至少知道问题所在。
推荐阅读
- vba - 发布几何集,SetDirect 错误
- tags - awscli 按多个标签值过滤 aws describe-auto-scaling-groups
- java - 如何使用 Filterable 类过滤 Firebase 实时数据库结果
- permissions - 如何在具有文件系统权限的 travis 上运行 golang 测试(如果可能,在 sudo 旁边?)
- r - 通过除一个之外的所有字符变量聚合数据帧列表的所有数值变量
- c - 在C中的数组中查找所有父ID
- python - 根据日期时间条件有效地合并数据帧
- python - 获取没有重叠的滑动窗口平均值
- r - R CDM CHECK 描述中可能拼写错误的单词
- flutter - 即使在 Flutter 中打开之前,如何从 api 中为“ShowModalBottomSheet”预取数据