主要内容:
- C#学习
- Unity项目
- 打砖块:BreakBricks
- Unity操作
Unity操作:
- 调试
- 碰撞体
- 触发器
- 视角
- 键盘视角平移
- 光照贴图
- 游戏对象Gameobject
- 访问对象
- 实体化对象 Instantiate
- 得到组件
- 对象的移动
- 交互类
- 鼠标输入
- 键盘输入
调试
在某函数内进行Debug.Log(...)
可实现调试检测,例如:
public class Player : MonoBehaviour {
// Use this for initialization
void Start () {
Debug.Log("Hello");
}
// Update is called once per frame
void Update () {
Debug.Log(" World");
}
}
//在控制台查看调试信息
碰撞体
前提:碰撞两者都有碰撞器 Collider ,至少一物体有刚体 Rigidbody(详细前提见 Unity-Manual-Colliders )
// 碰撞触发检测
private void OnCollisionEnter(Collision collision)
{
print(collision.collider); //获取碰撞体+碰撞器类型
print(collision.collider.name); //碰撞体名称
print(collision.collider.tag); //碰撞体标签
}
// 碰撞结束检测
private void OnCollisionExit(Collision collision)
print("OnCollisionExit");
// 碰撞持续检测
private void OnCollisionStay(Collision collision)
print("OnCollisionSaty");
触发器
存在于碰撞体collider页面栏,勾选is Trigger 则表示物体为触发器(可以穿过),否则物体为碰撞体。
视角
游戏视角的移动
键盘视角平移
对Main Camera
创建脚本,在Update
内调用:transform.Translate()
实现视角移动
光照贴图
灯光是实时计算的(默认设置:Light|Mode|Realtime
),对不变动的灯光进行贴图可以节省资源,在Windows|Rendering|Lighting Setting
打开了Lighting Setting
页面点击 Generate Lighting
实现灯光贴图。
游戏对象
关于Gameobject的一些列操作
访问对象
在脚本内创建一个字段,例如子弹bullet
:public Gameobject bullet;
,在Unity页面通过将Prefab
赋到脚本内bullet
一栏,从而实现在脚本内通过bullet
字段访问到Prefab
。
实体化游戏对象
实例化用到了GameObject.Instantiate(m_object, m_transform.position,m_transform.rotation)
- GameObject.Instantiate():创建实体化函数
- m.object:所创建的预制体
- m_transform.position,m_transform.rotation:预制体位置及旋转角度,默认下为
transform.position,transrotation
说明地址为脚本所在对象的位置;也可自行修改
用法:
//创建对象 b 接收实体化的预制体 bullet
GameObject b = GameObject.Instantiate(bullet, transform.position, transform.rotation);
得到组件
//rgd 得到对象 b 的刚体组件
Rigidbody rgd = b.GetComponent();
对象的移动
交互类
鼠标输入
Input.GetMouseButtonDown()
:读取鼠标按下情况,括号内容即为鼠标不同状态:
- 0:左键
- 1:右键
键盘输入
Input.GetAxis("")
:返回键盘输入的浮点数值
- Horizontal:读取键盘AD左右移动的值(反映在Unity中的X方向)
- Vertical:读取键盘WS上下移动的值反映在Unity中的Y方向)
用法:float h = Input.GetAxis("Horizontal");