麦克的游戏之路

博客、作品集及游戏拆解案

03/16
16:14
游戏功能脚本

Unity面板注释与组件预检测

通过一些内置的API可以帮助解释Unity面板的一些参量的含义:

当你的项目展示给他人看的时候,可以更快地帮助他人理解并调整游戏内的参数。同时在自己开发的后期也可以起到提示自己代码的功能的作用。

这里主要用到了几个API:

  • [RequireComponent(typeof(Rigidbody))]
  • [Header(“物理属性”)]
  • [SerializeField]
  • [Tooltip(“玩家的移动速度”)]

其中RequireComponent很好理解,会在你将代码绑定到Unity内部的GameObject时会自动的检测物体上是否有对应的组件,如果没有组件,将自动为物体添加组件,同时当你错误的移除组件时,会弹出窗口提示该代码必须要对应的组件才可以生效。

移除组件提醒(此时必须先移除代码再移除组件)

这样有效的避免了编程新手的一类常见错误,null空指针也就是获取不到组件的情况。

其次,Header则是当你在Unity的面板中,一段代码里设置了许多可以修改的参数时,进行分层次,类似小标题的效果。

这里填写的内容会将参数根据代码行位置隔开

然后,SerializeField则是因为有些变量声明的是private,而私有变量一般是无法在Unity的面板中预览的,只有公开变量,即声明为public才可以预览。如果说想要预览私有变量,则需要用这个API强制Unity把私有变量序列化,然后在面板中可见。

最后,Tooltip则是当鼠标停留在参数上面时,会自动显示注释的文字,可以对参数进行更深一步的解释和描述,便于理解。

鼠标停留后显示
03/14
16:48
游戏功能脚本

平面射击方向随鼠标位置移动

主要用到的API:Input.mousePosition,Camera.main.ScreenToWorldPoint,Mathf.Atan2,Mathf.LerpAngle,Quaternion.Euler

注意:反正切函数来将y/x转换为实际的夹角,然后将两个参数的影响变成一个参数,即一个坐标面,就是平面追踪的关键

实际挂载场景

Input-mousePosition – Unity 脚本 API

Camera-ScreenToWorldPoint – Unity 脚本 API

Vector3-normalized – Unity 脚本 API

Mathf-LerpAngle – Unity 脚本 API

Quaternion-Euler – Unity 脚本 API

Mathf-Atan2 – Unity 脚本 API

03/14
14:01
游戏功能脚本

简单的角色移动

主要用到的API:Input.GetAxis、transform.Translate

注意:乘速度speed和实际时间Time.deltaTime

实际挂载场景