Unity изменить свойство компонента после столкновения
Я пытаюсь изменить свойство компонента класса после столкновения, но это свойство не установлено.
void OnCollisionExit2D (Collision2D myCollision) {
Debug.Log ("OnCollisionExit2D in Player:" + myCollision);
CompoMyClass compo = myCollision.gameObject.GetComponent<CompoMyClass>();
if (compo.collideOnce == true)
return;
compo.collideOnce = true;
// it always goes here :(
}
Ты знаешь почему?
public class CompoMyClass : MonoBehaviour {
public bool collideOnce = false;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
1 ответ
Убедитесь, что вы смотрите на один и тот же экземпляр Компонента за столкновение. Если бы этот компонент был присоединен к нескольким объектам, у каждого была бы своя собственная переменная collideOnce, о которой нужно беспокоиться.
Хороший способ сделать это, который однозначно пометит каждый объект, это назначить такой идентификатор, как
Guid ID = Guid.NewGuid();
Также убедитесь, что объект, с которым вы сталкиваетесь, имеет правильный компонент, чтобы предотвратить исключение NullReferenceException, и что вы правильно выходите из конфликта. Вы можете переключиться на OnCollisionEnter.
наконец, убедитесь, что вы не устанавливаете это значение в другом месте.