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 = ;
Rot.y = ;
Rot.z = ; 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();
05-11 19:20