Object 体系结构常用方法

发表于2017-08-07
评论0 1.1k浏览

 Object 体系结构
Monobehavior 常用方法 
    继承函数:
       物体销毁:
            static Destroy()
            static DestroyImmdiate()
            static DontDestroyOnLoad()
        物体生成:
            static Instantiate()
       以上方法继承自 Object 类
        物体辨认:
            CompareTag()
        消息的推送:
            SendMessage()
            SendMessageUpwards()
            BroadcastMessage()
        以上方法继承自 Component 类-------------------------------------------------------------------------------------------------------------------------------------------------
    自身函数
        延迟执行程序
            Invoke()
            InvokeRepeating()
            IsInvoking()
            CancelInvoke()
        协同执行程序
            StartCoroutine()
            StopCoroutine()
            StopAllCoroutine()

-------------------------------------------------------------------------------------------------------------------------------------------------
                           我是分割线  呜哈哈哈哈
-------------------------------------------------------------------------------------------------------------------------------------------------

Destroy 物体销毁
    Destroy() : 可以在游戏中动态销毁任何东西,但是内存中并没有立即去释放,在刚销毁的时
                    候去调用物体的函数还是可以调用的
    参数 1 : obj everyone
    参数 2 :   obj everyone,float 0.0f  多长时间后销毁everyone

    DestroyImmdiate() : 立即销毁任何东西,可以直接删除资源
    参数 1:    obj everyone 
    参数 2:    obj everyone, bool  allowsDestroyAssets   是否允许连同资源删除,慎用

    DontDestroyOnLoad():当切换了场景,在新场景中该物体以及该物体的子物体不会被销毁,会继续保留到新场景中。
    PS:场景切换的时候,上一个场景的东西 都会被销毁。
-------------------------------------------------------------------------------------------------------------------------------------------------
Instantiate 物体的生成
    public static function Instantiate(original: Object, position: Vector3, rotation: Quaternion): Object;
    public static function Instantiate(original: Object): Object;
    生成的物体没有父物体,需要后续指定。生成的物体的 name 后面会多出 (Clone) ,生成物体的参数可以是 GameObject 也可以是 Component   如果是 Component 那么生成的这个Component 所绑定的物体。 original 这里传入参数是什么类型,那么返回也一定是什么类型,无法强转成其他类型
-------------------------------------------------------------------------------------------------------------------------------------------------
CompartTag 物体标签的辨认
    对物体标签对比的方法有两种:
        gameObject.tag == "name"
        gameObject.CompareTag("name");
    两种方法,第二种要比第一种更高效
-------------------------------------------------------------------------------------------------------------------------------------------------
SendMessage 消息的推送
        SendMessage() : 向特定的物体发送消息,在物体绑定的脚本中搜索方法名,搜索到了则执行
        参数:string  functionName ,obj 参数,SendMessageOptions 是否返回错误信息 
        SendMessageUpwards() : 向特定的物体发送消息,在物体以及物体的父Object绑定的脚本中搜索方法名,搜索到了则执行
        参数:同上
        BroadcastMessage():向特定的物体发送消息,在物体以及物体的子Object绑定的脚本中搜索方法名,搜索到了则执行
        参数:同上
        该调用是可以调用不同语言的,比如 JS 脚本中可以调用 C# 的方法,
        PS:如果 GameObject 中搜索到了绑定的两个脚本,并且两个脚本中由同样的方法名那么两个方法都会被执行
-------------------------------------------------------------------------------------------------------------------------------------------------
Invoke 延迟执行程序
        Invoke() : 设置多长时间后调用某方法
         参数:string functionName, float time
        InvokeRepeating() : 设置多长时间后以没多久调用一次的方式来重复调用某方法
        参数:string functionName, float time, float repeatRate
        IsInvoking():判断这个函数是否还在 Invoke 调用中
        参数:string functionName 
        CancelInvoke:停止对某脚本的 Invoke 调用
        参数:string functionName
        PS:Invoke 调用的方法必须是无返回值 无参数的        ,Invoke 中的调用时间是受到 TimeScale 影响的
-------------------------------------------------------------------------------------------------------------------------------------------------
Coroutine 协同执行程序
        协同程序是在主程序运行时同时开启另一段逻辑处理,来协同当前程序的执行,开启协同程序就是类似于开启了一个线程,但是协程不是线程
        StartCoroutine()
        StopCoroutine()
        StopAllCoroutine()

        有大量计算的功能不要写在 Update 中 会大大的拖慢程序的运行,需要加到StartCoroutine中运行
        Yield return 后面可以有的表达式 
                null:下一帧运行
                WaitForSeconds:输入一个时间,程序将被挂起一段时间
                WaitForEndOfFrame:当帧结束即 GUI 渲染结束之前程序将被挂起
                WaitForFixedUpdate:FixedUpdate 时间内挂起
                Another coroutine:放入另一个协同程序,那么将在另一个协同程序执行完成前被挂起,知道完成再执行该程序
                WWW:等待网络响应

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签: