【发布时间】:2021-08-02 07:15:37
【问题描述】:
我有 2 个依赖于鼠标点击事件的脚本(RunControl.cs 和 FireControl.cs)。
RunControl.cs :由屏幕顶部的按钮触发。点击后,游戏停止。
FireControl.cs:允许角色在鼠标点击时触发。
问题:由于我想停止游戏时必须点击,所以首先角色射击,然后游戏停止。我尝试了以下代码进行阻止,但我无法阻止它。
//RunControll.cs
private void Start()
{
isRun = true;
}
public void OnButtonClick()
{
if(btn.image.sprite == runSprite)
{
btn.image.sprite = stopSprite;
FindObjectOfType<FireControl>().isRun = false;
isRun = false;
}
else
{
btn.image.sprite = runSprite;
FindObjectOfType<FireControl>().isRun = true;
isRun = true;
}
}
//FireControl.cs
private void Start()
{
isRun = true; //Controlled by RunControl.cs
}
private void Update()
{
if (isRun)
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{
fire = true;
}
else
{
fire = false;
}
}
}
!!! 将 FireControl.cs 更改为 lateupdate 不起作用
【问题讨论】:
-
你有没有在
PlayerSettings中尝试过Script Execution Order看看是否有效? -
我不知道我们可以选择以这种方式进行编辑。在您发表评论后,我做了一些研究,这似乎是一种可行的方法。
-
让我随时通知您这些改进,如果您能根据具体情况将您的评论变成新的答案,我将不胜感激。
-
I added it like this 但它没有用。我在unity document-> 中找到了一个注释:这个设置窗口中指定的执行顺序不会影响用RuntimeInitializeOnLoadMethod属性标记的函数的顺序。 (您不能指定运行时初始化的顺序。)
-
所以最好改变你的设计以在一个地方处理所有的触摸事件。