Skip to content

Latest commit

 

History

History
123 lines (86 loc) · 3.46 KB

UnitySkills.md

File metadata and controls

123 lines (86 loc) · 3.46 KB

Unity3D

Unity操作

调试

在某函数内进行`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的一些列操作

访问对象

在脚本内创建一个字段,例如子弹bulletpublic 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<Rigidbody>();

对象的移动

交互类

鼠标输入

Input.GetMouseButtonDown():读取鼠标按下情况,括号内容即为鼠标不同状态:

  • 0:左键
  • 1:右键

键盘输入

Input.GetAxis(""):返回键盘输入的浮点数值

  • Horizontal:读取键盘AD左右移动的值(反映在Unity中的X方向)
  • Vertical:读取键盘WS上下移动的值反映在Unity中的Y方向)

用法:float h = Input.GetAxis("Horizontal");