在两个GameObjects中分别使用相同的变量

时间:2019-03-01 04:48:19

标签: c# unity3d boolean

我现在所拥有的是两个由同一script移动的盒子,如果脚本中的boolean canMovetrue,就会发生这种情况。

我的问题是我只想将canMove中的一个GameObjects设置为false。但是很明显,当我这样做时,GameObjects都会改变。

如何控制每个GameObject上的此变量?

2 个答案:

答案 0 :(得分:1)

如果我理解您的问题是您有一个脚本,可以说

public class CollisionHandler : MonoBehaviour
{
    public bool CanMove;

    void OnTriggerEnter(Collider other)
    {
        CanMove = false;
    }

    void OnTriggerExit(Collider other)
    {
        CanMove = true;
    }
}

,您只想将其中一个对象设置为false,对吗?

也许有点hacky,但是你可以做

public static List<GameObject> lastReset;

void OnTriggerEnter(Collider other)
{
    //get your own index in list
    var myIndex = lastReset.IndexOf(gameObject);

    //get others index
    var otherIndex = lastReset.IndexOf(other.gameObject);

    // Only go on if other is exactly the object in front of you
    if(otherIndex != myIndex - 1) return;

    // You way to define if can move
    CanMove = ...;
}

无论您在何处进行重置,

CollisionHandler.lastReset.Remove(objectYouReset);
CollisionHandler.lastReset.Add(objectYouReset);

要删除它并将其设置在列表的末尾。

答案 1 :(得分:0)

您可以将bool变量设为公开,以便可以在检查器中看到它们。 现在,在Inspector中将一个更改为 true ,将另一个更改为 false