我有一个像滚球游戏一样的游戏,在我的游戏中我有一个游戏对象是游戏管理器,在那个gameManager我实例化球,我想要做的是,当我的球与一个力量添加时另一个脚本中的数学数组的材料,当我尝试访问该脚本时,它说该对象不是实例化,我不知道如何处理这个:/。
这就是我做的
public class PowerHit : MonoBehaviour {
MoveBall moveBall;
Renderer rend;
private Material yourMaterial;
// Use this for initialization
void Start () {
moveBall = GameObject.FindWithTag ("Player").GetComponent<MoveBall> ();
rend = moveBall.GetComponent<Renderer> ();
yourMaterial = (Material)Resources.Load("Tennis",typeof(Material));
}
void OnCollisionEnter(Collision other)
{
Debug.Log (moveBall);
if (other.gameObject.tag == "Player") {
moveBall.mats [1] = yourMaterial;
}
}
}
我要访问的脚本是注册到我的球预制件的MoveBall脚本,我的球prefa有一个Player标签。
答案 0 :(得分:0)
在Awake()
函数中实例化实例,而不是Start()
。
答案 1 :(得分:0)
void OnCollisionEnter(Collision other)
{
if (other.gameObject.tag == "Player") {
other.gameObject.GetComponent<MoveBall>().mats [1] = yourMaterial;;
}
}
你正在通过比较标记检查其他对象是否是玩家,如果是,那么你得到那个玩家并且在那个玩家上有一个名为&#34; MoveBall&#34;那么你可以从那个脚本中获得matts [1]引用。
无需在开始时做那些你正在做的事情。只需指定&#34; yourMaterial&#34;变量引用或在运行时加载它。