unity3d Start执行不同时问题

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();

 

posted on   c_dragon  阅读(1727)  评论(0编辑  收藏  举报

编辑推荐:
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
· 如何做好软件架构师
阅读排行:
· 欧阳的2024年终总结,迷茫,重生与失业
· 聊一聊 C#异步 任务延续的三种底层玩法
· 上位机能不能替代PLC呢?
· 2024年终总结:5000 Star,10w 下载量,这是我交出的开源答卷
· .NET Core:架构、特性和优势详解
历史上的今天:
2013-09-24 opencv播放视屏并控制位置

导航

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示