[计算机] Unity Monobehavior 常用方法

查看:717 |回复:2 | 2021-9-3 09:09:14

您需要 登录 才可以下载或查看,没有账号?注册

x
Unity Monobehavior 常用方法 学习整理
  继承函数:
        物体销毁:
            static Destroy()
            static DestroyImmdiate()
            static DontDestroyOnLoad()
        物体生成:
            static Instantiate()
        物体辨认:
            CompareTag()
        消息的推送:
            SendMessage()
            SendMessageUpwards()
            BroadcastMessage()
         自身函数
            延迟执行程序
            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():当切换了场景,在新场景中该物体以及该物体的子物体不会被销毁,会继续保留到新场景中。
     &&场景切换的时候,上一个场景的东西 都会被销毁。
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:等待网络响应

评分

参与人数 1活跃度 +16 展开 理由
愚不是渔 + 16 【感谢】楼主分享的内容!很棒!

查看全部评分

2021-9-3 09:09:14  
 赞 赞 1

使用道具 登录

2个回答,把该问题分享到群,邀请大神一起回答。
2#
帅啊,厉害
回复 收起回复
2021-9-3 14:35:45   回复
 赞 赞 1

使用道具 登录

3#
回复 收起回复
2023-3-1 12:09:10   回复
 赞 赞 1

使用道具 登录

CG 游戏行业专业问题

程序逻辑文章算法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表