unity3d Unity OneMouseDown第二个对象

8ulbf1ek  于 2022-11-16  发布在  其他
关注(0)|答案(2)|浏览(129)

我是团结组织的一个乞丐。
我有一个脚本,它安排两个游戏对象的移动。我使用OnMouseDown。它激活游戏对象在那里点击发生,并让移动(用键盘)。我的问题是,如果我点击第二个游戏对象的第一个仍然移动(他们两个)。我怎么能关闭第一个对象的移动?

void OnMouseDown()
    {
      
      if (activeUnit==false ) 
      {
        activeUnit=true;
                      
        }
      else {activeUnit = false;}
    }

    void Movement (){

        if (activeUnit == true)
         {//here comes the movement method

谢谢你的帮助!

zzwlnbp8

zzwlnbp81#

如果你想把移动限制在一个对象上,你可以用static代替bool,然后去

private static YOURCLASS _currentlyActiveInstance;

void OnMouseDown()
{
    if(_currentlyActiveInstance == this)
    {
        _currentlyActiveInstance = null;
    }
    else
    {
        _currentlyActiveInstance = this;
    }
}

void Movement ()
{
    if (_currentlyActiveInstance == this)
    {
        //here comes the movement method  
    }
}
pkwftd7m

pkwftd7m2#

要切换变量,最好使用以下语法:

void OnMouseDown()
    {
      activeUnit=!activeUnit;
    }

你可以添加另一个函数OnMouseUp来取消切换单元。所以完整的代码应该看起来像这样:

void OnMouseDown() {
      ToggleUnit();
}
void OnMouseUp() {
      ToggleUnit();
}
void ToggleUnit() {
   activeUnit=!activeUnit;
}

否则,如果您不想使用OnMouseUp取消切换Unit,则应添加一个EventListener,以便在单击时取消切换Unit

相关问题