001
2004 诞生于阿姆斯特丹
2005 总部设在了美国的旧金山 发布Unity 1.0 版本
起初只能用于Mac平台,用于Web项目和VR虚拟现实的开发
2008年推出Winddows版本,支持IOS系统和Wii(任天堂家用游戏机)系统
2009年开发者注册人数达到3.5万人,荣登09年游戏引擎前5名。
2010年开始支持Android平台,继续扩大影响力。
2011年开始支持Ps3和Xbox360,从此,全平台构建完成,无可挑剔。
如此强大的游戏引擎,而且支持当今最火的三大平台: Web IOS Android
调查显示,这款引擎的快速开发游戏的有点得到游戏开发者的青睐,体现为易学,易用。
Unity开发的知名游戏: 埃巴拉太空计划 唯舞独尊(类似QQ炫舞)有杀气童话(网易出品) 神庙逃亡2(经典)
Uinty同时提供了Unity的免费版本(如个人版),打破游戏公司靠卖Lisence赚钱的常规,采用更为流行的2/8拆分成,并且体统Access Store 平台(一站式销售)。
002
Unity 5.2的破解
Unity的官网:www.unity3d.com/cn/ 部分汉化
003
vs2012是用来写代码的,Unity引擎中自带MonoDevelop编译工具,但是其代码提示功能不够强大
Unity中设置默认编译工具: Edit -> Prefereneces(偏好设置) ->External Tools(外部工具)-> External Scripts Editor(外部脚本编辑器) ->选择VS
选择默认的编译工具的目录: Common7 IDE devenv.exe ->点击确定
004
Layout(布局) Assets(资源) Scene(场景) 顶部的三个按钮,分别是运行 暂停 逐帧快进(常用于游戏优化)
005
Project 项目面板
声音资源 (Auido)
模型资源
场景文件 (Scene)
材质 (Material)
脚本 (Scripts)
Hierarchy 层级面板
当前场景包含什么东西
层级面板中的所有东西称为GameObject (游戏物体)
Inspector 检视面板 查看属性
场景->游戏物体->组件
Scene 场景窗口
Game 游戏预览窗口
006
场景 游戏体 组件
Ctrl + D 复制
Hierarchy中的内一个东西都称之为游戏物体
007
双击聚焦(或者使用快捷键f)
Persp 透视视图 近大远小
Iso 正交视图 平行视野
008
世界坐标系 局部坐标系
红色x轴代表左右方向 蓝色z轴代表前后方向 y轴代表上下方向
x,y,z轴指向的都是正方向
游戏物体的子物体的位置是以父系物体为坐标原点的,此时他是局部坐标,离开父系物体(就是在根目录)就是世界坐标
009
外观操作
Transform组件
position 位置
rotatin 旋转 围绕旋转的轴是当前修改的轴 修改的数值为度数:30,,60,,90,120……
scale 缩放
快捷键: Q 平移 W 位移 E 旋转 R 缩放 T 常用于2D游戏
010
小结
011
关于物体应用材质的俩种方法
1.直接将材质球拖到Scene面板中物体上
2.将材质球拖到Hierarchy面板下的物体上
012
Rigidbody组件的功能:刚体组件,模拟物理效果,让物体具有物理属性,重力和速度等。
Remove Component 移除组件
Creat Scripts: 创建Scripts有俩种方式,一种是在Hierarchy面板中点击游戏体添加脚本组件,一种是在Project 面板中创建,然后拖动到物体上。
013
类->方法
Start方法下放置一些初始化的代码
UPdate方法下放置持续调用的代码
private 私有的
public 公共的
private Rigidbody rd; //定义刚体组件的字段(变量)
void Start () {
rd = GetComnponet(); //获取刚体组件
}
void Update (){
rd.AddForce(new Vector3(x,y,z)); //使用刚体组件下的AddForce的方法添加力,参数指定力的方向
}
014
单精度浮点数 float
双精度浮点数 Double
private Rigidbody rd;
public int Force = 5;
void Start () {
rd = GetComponent();
}
void Update () {
float h = Input.GetAxis("Horizontal");
float v = Inout.GrtAxis("Vertical");
rd.AddForce(new Vector3(h,0,v) * Force);
}
015
相机跟随游戏物体的代码
private Transform playerTransform; //指定更随目标的位置
private Vector offset;
void Start () {
offset = transform.position - playerTransform.position;
}
void Update () {
transform.position = playerTransform.position + offset;
}
016
控制小球的移动范围
通过Cube创建墙
017
创建可收集食物
使x,y,z轴各旋转45度即可得到一个立起来的物体
当场景中有很多一样的物体,我们可以将这个物体做成一个Prefab(预制体)
如果想平移一个旋转后位置不规则的物体,我们可以将Local(局部坐标)改为世界坐标(Global)
018
控制物体的旋转
void Update () {
transform.rotate(new Vector3(0,1,0));
}
019
关于Unity手册(API函数和Manual) *重点*
点开Help帮助选择Scripting References(脚本帮助手册)
① API手册就像一个字典,可以查看组件有哪些功能,哪些方法
② Manual是脚本手册,对功能做介绍,相当于教程
020
碰撞检测 *重点*
检测: ① 碰撞检测
② 触发检测
③ 射线检测 (Roguelike项目中有用到)
*碰撞检测属于Rigidbody发出的事件*
碰撞检测的三个阶段: ① 俩个物体接触的那一刻 OnCollisionEnter (只会触发一次)
② 俩个物体接触的时候 OnCollisionStay (触发很多次)
③ 俩个物体分开的那一刻 OnCollisionExit (只会触发一次)
//碰撞检测
void OnCollisionEnter(Collision collision) {
//collision.collider //获取碰撞到的游戏物体上的Collider组件
//string name = collision.collider.name; //获取碰撞到的游戏物体的名字
//print(name); //print可以把一个字符串输出显示到控制台 tip:Ctrl + Shift + C 控制台快捷键
if(collision.collider.tag == "Food"){
Destroy(collision.collider.gameobject);
}
}
021
触发检测控制主角捡起食物
※ 碰撞检测会触发一个物理效果(如物体碰撞的停顿)
※ 触发检测会穿过物体 (如主角进入某个区域,门会自动打开的游戏场景)
//触发检测
void TriggerEnter(Collider collider) {
if(collider.tag == "Foods"){
Destroy(colldier.gameObject);
}
}
OnTrigger属于MonoBehaviour类
※ 切记要勾选被碰撞体的 is trigger,不要勾选主角!
022
显示分数和胜利检测
创建分数GUI: ① 在Hierarchy面板中右键UI创建Text文本
② 点选最上角2D小图标切换视角,按住Alt选择左上角
※※ 当我们控制整个物体的时候就定义一个GameObject(public GameObject name;),控住组件的时候我们可以定 义组件的名称(public Text text;)
public int score = 0;
public Text text;
public GameObject winText;
void OnTriggerEnter (Colloder collider) {
if(collider.tag == "Foods"){
score++;
text.text = score.ToString();
if(scor == 8){
winText.SetActive(true);
}
Destroy(collider.gameObejct);
}
}
023
游戏的发布和运行
File - build setting
网友评论