Unity基础(12.12)
比如你用Java写了一个自己的class叫MyClass,然后在另一个文件里创建了一个这个对象:
MyClass classobject = new MyClass();
这里面的MyClass相当于你上面说的Transform,是类名。而transform是Transform类的实例,相当于这里的classobject。所以你不能说Transform.position,而要指明是这个对象的transform.position。在Unity里面,场景中的每个对象都有一个类型为Gameobject和Transform的实例,分别名为gameobject和transform。gameobject主要负责这个物体上的一些部件之类的东西,而transform则负责了这个对象的位置、旋转、缩放等信息。可视化的话就是面板里面的这个部分
GameObject go,parent;
Transform t = go.transform;
t.parent = parent.transform;//使parent成为go的父级
activeInHierarchy状态代表物体在场景中的实际的active状态。实际上代表的是物体及其所有祖先物体的activeSelf状态。而activeSelf对应于其在inspector中的checkbox是否被勾选
activeSelf状态代表物体自身的activeSelf状态,所以当物体本身activeSelf为true,而其所有祖先物体的activeSelf状态不全为true时,这个物体的activeInHierarchy状态为false。
begin()返回的迭代器在容器的第一个元素。end()返回一个迭代器,这是过去的容器端值。如果容器为空,然后begin()= =end()。
private是成员修饰符,不能用于类的;internal类和成员都可以修饰。而且两个的范围也不一样,internal的成员(非类)在同一个命名空间下其他类可以访问,private只能本类。这样看界限划分也就是同一类、同一程序集和所有
对于排序中拖拽物体滑动用到ui drag scrollview时,需要加box colider.
关于协程
协程不是线程,协程的本质还不清楚。
在协程内部停掉用yield break
yield return (int 型数字,bool值,null)都是等待下一帧再继续执行
1&2&3. Used Total和Reserved 均是物理内存,其中Reserved是unity向系统申请的总内存,Unity底层为了不经常向系统申请开辟内存,开启了较大一块内存作为缓存,即所谓的Reserved内存,而运行时,unity所使用的内存首先是向Reserved中来申请内存,当不使用时也是先向Reserved中释放内存,从而来保证游戏运行的流畅性。当Reserved中空余内存不够程序下一次申请内存的大小时,Reserved就会重新向系统申请内存。同时,当Used Total向Reserved释放一定内存后,Reserved也会将一部分内存释放会系统。这部分我们无法控制。
- mono进行内存申请和释放时,会向底层unity进行内存的申请和释放。
- unity自身的内存池并不会像gc算法一样提供内存回收,释放。