- Input.GetMouseButtonDown(0)只在鼠标按下时刻作用
- Vector3类型不能直接与double类型相乘,但可与float相乘
- 小球速度过快导致直接穿过墙体可以设置小球刚体组件中的Collision Detection模式为Continuous/ContinuousDynamic就可避免
- Mathf.Clamp(a,min,max);让a的取值在min和max之间
- Unity Graphical User Interface(UGUI)
- Inspector面板下的Max Size可以修改图片的尺寸,2048并非内存大小限制而是宽或高都不能超过2048个像素
- UGUI Anchors重合为点时选择的位置为原点建立笛卡尔坐标系(右上为正),PosX,PosY的值是Pivot点相对于这个坐标系的坐标,所以在坐标值不变的情况下更改锚点位置,相应UI的位置也会改变;Anchors不重合时Pivot点对位置的控制失效即不起作用,位置定位方式为控件边缘距锚点各个方向的偏移量;每个控件都有锚点,不过锚点的坐标位置是相对于父控件的
- Anchors的四个点对应着控件的四个顶点,各对应点之间的偏移量一旦设定就不会改变(用于屏幕适应)
- Pivot还可以控制控件的width,height改变方式,例如当Pivot的X为0时,增加Button的width,Button只会向右拓展左边不会动(依据是我们未改变PosX,实际就是锚点距中心点的水平偏移量不变)
- 当scene和game视图中的字体模糊时,再game视图设置具体的分辨率即可让字体变清晰
- PlayerPrefs数据持久化,跨场景保存传递数据,int、float、string,不支持bool值
- 一个场景中只能有一个AudioListener组件,一般挂在Camera上
- UGUI中Toggle控件绑定的事件需要有一个bool型参数来控制Toggle的状态(是否选中),而系统会自动将我们写的形参与Toggle的实际状态绑定,即不需要给形参赋值
- ScrollRect组件当选中移动类型为弹性时,内容组件与视口组件(通常是Mask)的顶部不能调节偏移量;内容组件以GridLayoutGroup组件为例,我们也可以通过调节GridLayoutGroup的Padding的方式来保证内容在视口的中央
- 在空物体上加个SpriteRender(Cube的为MeshRender)拖进图片,可以将图片当作物体直立在场景中
- 协程中yield return 耗费时间
- Random.Range(min,max)可以取到下限但取不到上限
- Animator状态机中,权重(Weight0~1优先级逐渐增大)一样的情况下BaseLayer的优先级最低,Layer越往下优先级越高,不过当优先级高的动画层中没有默认动画时,会播放低一层的动画
- 修改UI的位置用transform和rectTransform(UI专属,localPosition修改相对坐标即面板显示的坐标,position为绝对坐标为控件相对坐标与Canvas坐标之和)是一样的
- UGUI托管的控件即带RectTransform的用localPosition和LocalRotation,其它用position和rotation
- shift+左键以左键点击的对顶的点为基准等比例缩放;shift+alt+左键以中心点为基准等比例缩放;alt+左键以中心点为基准非等比例缩放(对边同时改变)
- GridLayoutGroup最好和Mask的3条边重合,因为滑动过程中GridLayoutGroup会偏移到和Mask重合;另外可以将每个grid放置在对应的空物体下,这样GridLayoutGroup迫使空物体尺寸为100×100而grid的实际大小不变,还方便计算尺寸;设计时最好计算好宽高(例:每页3×3共4页水平则,Group左上底与Mask重合;Group宽等于item12倍宽+space12倍宽;Mask的宽度等于item3倍+space3倍)
- 获取与本体无父子关系的物体上的控件可用GameObject.FindObjectOfType<>();Transform.Find(“子物体名”)找到对应子物体,同tranform.FindChild(消耗高)一样,并且只要物体的根节点为active状态,即使该物体甚至连它的父物体也隐藏到情况下都可以找到;Gameobject.find是找到hierarchy下最后一个同名物体,物体以及它的父物体等都必须被激活才能找到
- GameObject.Find()并不能查找到active为false的游戏物体;transform.Find()和transform.FindChild()方法是可以查找到隐藏的游戏物体的,但是也只限于是其transform的子物体才可以
- 给DropDown.value赋值要等DropDown的各个选项填充好之后,否则赋不了,即使令DropDown.value = 1(>0),实际DropDown.value的值还是0
- OnTrigger或OnCollision方法在所在脚本被禁用时,方法依然会被调用,只依赖于游戏对象,除非对象被隐藏或摧毁
- DoTween中每执行一次Do方法都会自动创建一个动画,然后自动销毁
- 不管是同一物体还是不同物体都是先挂的脚本都后执行
- mipmap原理:将一张贴图按照2的倍数进行缩小直到1×1,把缩小的图都存储起来(所以占的内存资源大了),在渲染时根据离相机的距离选择一张贴图来使用(这点类似LOD)
- lightmap:光照贴图,对场景中的静态物体进行烘焙得出一张lightmap建立照明效果,用来代替复杂的光照计算,提升了性能(这样即使删除灯光,也能显示照明效果)
- Prefab上的脚本如果拖拽赋值只能赋来自Prefab的东西
- 点击UI时禁用游戏内逻辑,可在输入判断条件里&&以下api(需引入命名空间):EventSystem.current.IsPointerOverGameObject()==false;
- 如果想要在弹出UI时屏蔽游戏内的逻辑,可以建一个全屏image改成全透明,并让它显示在UI的下方
- Unity中的存档方式:[1],PlayerPrefs数据持久化方案(只能int、float、string)[2],Serialization(序列化)将对象转化成字节流保存到File、Database、Memory,然后再反序列化(Deserialization)回来将字节流转换成对象。常见的序列化方法有:二进制法、xml和json(json和语言无关)
- 游戏设计分辨率如果低于电脑分辨率而又没做屏幕自适应,则画面会因全屏而被拉伸,这时候可以在Awake方法中写死分辨率Screen.SetResolution(1024,768,false);最后false是不全屏的意思。屏幕可能会闪一下因为执行到代码才会设置,如果是专业版unity可以在打包的时候splash image选项中将splash screen和Logos取消勾选解决;如果免费版需修改注册表解决
- 导入插件时出现warning,内容如果是使用了过时api,可以在该脚本上方#pragma warning disable 0618(后面是编号warning中会提到即CS0622)
Unity笔记
最新推荐文章于 2020-10-27 13:59:34 发布