Unity的Coroutines实际创建一个iterator,当通过StartCoroutine方法开启协程时,它会储存下来,一直请求下一项每一帧直到完成。yield用来区分item,在你实际要做的事情和迭代器要做之间
GameObject默认的Pivot一般为中心点,So要把两个子父体对象的正方体GameObject粘在一起,则子正方体相对父正方体要移动(父边长+子边长)/2
transform.parent = parent.transform;
new GameObject("Fractal Child").AddComponent<Fractal>().Initialize(this);
①先new GameObject
②Fractal组件并联系到GameObject
③Awake和OnEnable方法被触发
④增加Fractal组件完成
⑤调用Initialize()方法
⑥到下一帧,执行Start()方法
MeshFiter filter = gameObject.AddComponent<MeshFilter>(); filter.mesh = mesh;
AddCompont<>()为GameObject添加一个由<>泛型声明类型的组件,并返回这个组件的引用,可以直接修改它的值
该函数在组件激活的时候调用,在第一次Update之前,只调用一次
材质包含了Shader和Shader所需的数据,Shader告诉图形显卡怎么绘制物体的顶点们
hours.localRotation = Quaternion.Euler(0f,0f,time.Hour*(-hoursToDegrees));//欧拉角转换成四元数
struct结构体是值类型
property属性是一个方法类型的变量,可控制为可读或可写的
private void Update(){}
这个方法是组件中每帧都执行的方法
Update方法无论声明为公有还是私有,内置方法也一样,Unity都可以找到它并且调用它,所以我们不应该声明Update为公有,因为我们并不打算自己去调用它,为了减少潜在的BUG,应该声明为private