• 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();
  • 相关阅读:
    null和undefined的区别
    "NetworkError: 404 Not Found fontawesome-webfont.woff?v=4.0.3
    php字符串
    php数组
    Oracle 和 MySQL的区别(不完整)
    拦截器和过滤器的区别
    SpringMVC和Struts2的区别
    Redis的介绍
    SpringBoot入门(2)
    SpringBoot入门(1)
  • 原文地址:https://www.cnblogs.com/dragon2012/p/3991061.html
Copyright © 2020-2023  润新知