Unity笔记

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿斯提尼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值