1.一个Scene的场景里有许多的GameObject,很多GameObject上绑定了Script,每个Script上又都有Start函数
using UnityEngine; using System.Collections; public class BallRotate : MonoBehaviour { private Vector3 Rot; private bool m_bRot =false; // Use this for initialization void Start () { Rot.x = 0; Rot.y = 0; Rot.z = 0; m_bRot = false; } // Update is called once per frame void Update () { if (m_bRot) { this.transform.Rotate(Rot.x, Rot.y, Rot.z); Rot.x += 0.010f; //Rot.y += 0.02f; //Rot.z += 0.12f; } } }
但是我们使用一个脚本调用另一个脚本的时候
m_ObjMusicPlayer.GetComponent<MusicControl>().PlayBg();
我们习惯性的在其他脚本里的Start函数里调用这个脚本的功能,我们帮默认这个脚本已经执行过Start的,但是事实上是不一定的。u3d会报错
这个时候我们要给他添加一个开放的接口Init,然后我们在调用功能的前面加上Init这个动作
m_ObjMusicPlayer = GameObject.Find("MusicPlayer"); //go Music m_ObjMusicPlayer.GetComponent<MusicControl>().Init(); m_ObjMusicPlayer.GetComponent<MusicControl>().PlayBg();
时间: 2024-10-26 07:52:01