Object 体系结构常用方法

来源:互联网 发布:mac怎么看系统版本号 编辑:程序博客网 时间:2024/04/29 03:36

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:等待网络响应

.

0 0