Unity的一些个人有用技巧

1、调整材质在Renderer中,若想对材质做出操作,先获取Renderer这个组件中的material

2、OnTriggerEnter触发检测中的collision,若想判断Tag,直接collision.CompareTag
OnCollisionEnter碰撞检测中的collision,若想判断Tag,则collision.gameObject.CompareTag

3、GameObject.Find()场景中直接寻找物体

4、Destroy(gameObject)除了瞬时的,也有延迟的Destroy(gameObject,2.0f),延迟2秒消亡。

5、除了射线检测,也可以使用物理检测Physics2D.OverlapCircle()以一个圆形检测

6、二维物体转身,绕y轴旋转外,也可以使用x轴缩放,缩放大小由输入决定

7、可以声明OnDrawGizmos()方法,并自己定义Gizom

8、LineRenderer组件可以渲染线

9、有效利用随机数,提高游戏性

10、PlayerPrefs记录先前数据

11、SceneManager.GetActiveScene().name获取当前场景的名字

12、Per pixel Unit每个网格有多少像素

13、2D绘图 Tilemap=>tilePalette

14、Render图层 越大越远

15、2D中地面碰撞体 Tile map Collider

14、getAxis 有浮点,getAxisRaw 只有(-1,0,1)

15、update 按帧更新,fixedUpdate 按实际帧更新

16、Velocity可以判断是否下落

17、[SerializeField]标签可让外部看见

18、cinemachine插件,自动跟随物体移动等工业效果的摄像机

19、FindObjectType<>返回一个类,一般用于寻找脚本
GameObject.FindWithTagGameObject.Find都只能返回active的物件

20、Invoke函数的委托,可以控制调用时间Invoke(fuc,延迟时间)

21、Audio Mixer可以实现与拉条sliderbar的交互和与其他神效的混合等

22、触控调节,鼠标左键的功能毫无影响,UI无影响,所有所谓触控,实际上就是UI或者是检测Touch事件或者鼠标事件,Joystick Pack插件也可以实现。

23、单向平台 Platform Effector2D

24、Unity一些常见特性(标签)
[Serializable] 序列化
[SerializeField] 序列化一个域,强制让private外部可见
[UnityEditor.MenuItem("")]编写一个菜单工具,必须为public static
[Range(min,max)] 设置最小最大值,只限接着的第一个声明
[Space] 在编辑窗口空行
[Header("")] 类似注释
[HideInInspector] 隐藏第一个声明
[TextArea]将编辑器中文本空间“扩大”
[CreateAssetMenu] 菜单编写工具,必须继承ScriptableObject类
[RequireComponent(typeof(Rigidbody2D))] 脚本添加一个Rigidbody2D组件

25、射线的常见使用场景:人物上楼梯、判断地面、人物悬挂等 一般会调用的类Physics2D.RayCast

26、让物件在场景永久存在,不被重新加载删除,一般是GameManager与声音等,利用方法DontDestroyOnLoad(gameobject);

27、视口坐标变换ViewportToWorldPoint,仅在正交投影好用

28、Cursor.visible隐藏鼠标

29、加速减速利用协程可以得到很好的效果

30、组件的加载也是一种消耗,当用在子弹上时,利用transfor.Translate来代替刚体组件,将大大减低性能消耗

31、手动更改脚本启动顺序

32、触发器的触发条件

  • 两个游戏对象中至少有一个拥有动态/运动学刚体组件
  • 两个游戏对象必须都有碰撞体组件
  • 其中一个游戏对象的碰撞体组件被标记为触发器
  • 层级之间得可碰撞

33、碰撞体的触发条件

  • 两个游戏对象都拥有碰撞体组件
  • 两个为非触发器
  • 至少其中一个游戏对象拥有动态组件
  • 层级可碰撞

34、子弹一般不挂载刚体组件,可以减低功耗,因为子弹我们要重复用且数量多,将其挂载到人物身上即可

35、AudioSource.Play()无法播放复数音频,会覆盖正在播放的声音;而AudioSource.PlayOneShot()不会覆盖正在播放的声音

36、异步加载SceneManager.LoadSceneAsync
以及它所返回的类AsyncOperation
它能很好解决LoadScene发生的卡顿,和提高性能

37、getcomponent<>()也能用来判断true或者full
if(getcomponent())

38、Sealed
官方描述:应用于某个类时,sealed 修饰符可阻止其他类继承自该类。 还可以对替代基类中的虚方法或属性的方法或属性使用 sealed 修饰符。 这使你可以允许类派生自你的类并防止它们替代特定虚方法或属性。

posted @ 2022-02-18 23:59  Ariaaaaa  阅读(14)  评论(0)    收藏  举报