我创建了一个预制件的实例(它是两个矩形,中间有一个缝隙),如果玩家精灵与该缝隙中的对撞机碰撞,则得分会增加。
我在预制对象上有一个boxCollider2D,并且希望将此对撞机作为单独sprite上的公共变量,因此我可以在sprite上的脚本中访问它。
因此,col,当前是精灵与之交互的对撞机,
屏障(克隆)(UnityEngine.BoxCollider2D)
我的colliderBox是:
障碍(UnityEngine.BoxCollider2D)
所以唯一的区别是一个来自预制件,一个来自使用预制件创建的对象。
void OnTriggerEnter2D(Collider2D col){
if (col.CompareTag ("barrier") && col != colliderBox) {
Debug.Log (col);
Debug.Log (colliderBox);
SceneManager.LoadScene (mainMenu);
}
}
答案 0 :(得分:2)
如果我明白了,您希望将对撞机作为公共变量,请尝试以下操作:
public class PrefabObject: MonoBehaviour {
public BoxCollider2D boxCollider;
private void Start()
{
this.boxCollider = this.GetComponent<BoxCollider2D>();
}
}
public class OtherObject: MonoBehaviour {
public PrefabObject prefabObject;
private BoxCollider2D boxCollider;
private void Start()
{
this.boxCollider = prefabObject.boxCollider;
//or also this.boxCollider = prefabObject.GetComponent<BoxCollider2D>();
}
}
如果没有附加到带有BoxCollider2D的GameObject的PrefabObject脚本,而仅附加了对撞机组件,则OtherObject将类似于:
public class OtherObject: MonoBehaviour {
public GameObject prefabObject; //Here is the change!
private BoxCollider2D boxCollider;
private void Start()
{
this.boxCollider = prefabObject.GetComponent<BoxCollider2D>();
}
}