认真CS☀️协程、RequireComponent、Serializefield

在这里插入图片描述 

目录

🟥 协程

🟧 [RequireComponent(typeof(Component))]

🟨 [SerializeField]


 

🟥 协程

子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B执行过程中又调用C、C执行完毕后返回,B执行完毕后返回,最后是A执行完毕。所以子程序是通过栈实现的,一个线程就是执行一个子程序

协程看上去也是子程序,但在执行过程中,在子程序内部可中断,转而执行别的子程序,在适当时候再返回接着执行

格式:StartCoroutine(IEnumerator routine),即它的协程方法是IEnumerator类型

StartCoroutine就是开启一个协程,yield return是迭代器块返回到调用迭代的地方

一个协程的执行可以在任何地方用yield语句来暂停,yield return的值决定了什么时候恢复协程的执行,协程在几帧中执行操作时有极大用处,协程几乎没有性能开销

StartCoroutine一般都会立即返回,然而你也可以获得返回结果的值,但是这一步会等到协程执行完毕后才能生效

携程的优势:

a、携程极高的执行效率,因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销。和多线程相比,线程数量越多,协程的性能优势越明显

b、不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需判断状态就好了,所以执行效率比线程高很多

 

 

🟧 [RequireComponent(typeof(Component))]

作用:当添加了一个用了RequireComponent组件的脚本,需要的这个组件就会被脚本自动添加到gameobject上,这可有效避免组装错误

例子:一个脚本可能需要刚体总是被添加到相同的gameobject上,用RequireComponent属性的话,这个过程将被自动完成,因此你可永远不会组装错误

用法:在新建的类前面加[RequireComponent(typeof(Component))],该代码没有分号与其他内容隔开。使用后,新生成的组件是无法被移除的

 

 

🟨 [SerializeField]

serialize,序列化

field,场地

在Inspector面板显示的属性都同时具有serialize功能。序列化意味着引擎会保存该域保存过的值;关闭U3D再打开工程,该域值仍然在

a、public变量

在没有加入Attribute(属性)的前提下,public变量是默认被视为可以被serialize的,所以public声明的变量在面板可见,private不可见

b、[SerializeField]Attribute

强制unity去序列化一个私有域,这是一个内部的unity序列化功能,有时候我们需要序列化一个private或者protected属性,这时候就可以用[SerializeField]Attribute,之后就可以在面板显示

c、[HideInInspector]

表示将原本显示在面板上的序列化隐藏起来(隐藏public)

 

 

 

大家还有什么问题,欢迎在下方留言!


 

在这里插入图片描述


如果你有 技术的问题 或 项目开发

都可以加下方联系方式

和我聊一聊你的故事🧡

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值