基础:--------------
场景文件:Scenes
运行测试游戏快捷键:Ctrl+P
三维物体:3D Object
俩个概念:
所有看到的物体在Unity中被叫做游戏对象(GameObject),例如,球体,摄像机,光源
每一个游戏对象由不同的组件(Component)构成,每个组件会提供不同的功能,比如Transform定义了物体在场景中的位置
MeshRenderer/三角网渲染器,用来渲染三维物体
可以导入fbx模型,可以在Sketchfab,turbosquid,上找到免费高质量的三维模型
快捷键:QWER
开发:---------------
Transform
左侧面板中,可以将1个对象拖入到另一个对象的子节点,这样会随着父节点移动缩放
MeshRenderer
重要属性:Materials,材质,决定了外观,可以自己新建材质,拖入到物体中赋值
添加其他组件,Add Component
例如添加Rigidbody/刚体,让游戏对象参与物理引擎的计算,物体会收到重力下降碰撞反弹等等
可以用Animator来控制管理角色的动画,AudioSource给游戏对象添加声音,使用Canvas来绘制二维用户的界面,使用ParticleSystem来产生粒子效果等等
摄像机Camera,展示了游戏中玩家的视角,除了可以用之前的方法修改摄像机的位置,旋转角之外,还可以修改摄像机清除背景时用的颜色,摄像机的投影类型视角大小等等,
同时也可以通过给摄像机添加 Post-process Layer组件,配合场景中的Post-process Volumes来给镜头添加后期处理的特效
需要动态操作(用户界面/网络控制/玩家控制/按键响应/事件响应等),需要编写脚本:
选择对象-添加组件- New Script
双击脚本名称可以在IDE中打开并编辑它
脚本都继承于MonoBehavior
默认定义了2个函数,
Update() 每帧都会被调起
Start() 只会在开始的时候被调用一次
Debug.log("输出调试信息");
测试:在Update()中写入代码:
Rigidbody rb;
//参数设置为Public,这样可以在编辑器中实时修改它们
public float acceleration = 1;
public float rotateSpeed = 200;
void Start()
{
rb = GetComponent<Rigidbody>();//获取RigidBody组件
}
void Update()
{
if(Input.getKey(KeyCode.W))//调用Input.GetKey去判断这一帧中键盘上的W键是否被按下
{
rb.AddForce(transform.forward * acceleration);//这里用到RigidBody/刚体,调用它的AddForce()来添加一个作用力,这个作用力的方向是物体面朝的方向,乘以这里顶一个一个参数加速度
}
if(Input.getKey(KeyCode.A))
{
rb.Rotate(0,-rotateSpeed * Time.deltaTime,0,Space.Self);//我们调用Time.deltaTime获取上一帧与这一帧的时间差
}
else if(Input.getKey(KeyCode.D))
{
rb.Rotate(0,rotateSpeed * Time.deltaTime,0,Space.Self);
}
}
打包/构建:------------------
快捷键Ctrl+Shift+B
上方选择进入游戏后的第一个场景,下方左下角选择打包的平台
参考链接: