unity开发平台的使用

1、游戏对象

游戏对象的显示关系

游戏对象的轴心一般为游戏对象的几何中心,也可以进行人为更改

游戏对象的父子关系:将一个游戏对象挂载的另一个游戏对象下,子节点以父节点作为轴心参考

摄像机:游戏运行时的实际画面即为摄像机所看到的画面

2、Component 组件

Sprite Renderer组件:用于显示图片

Transform组件:用于调整游戏对象的Position(位置)、Rotation(旋转)、Scale(缩放)

AudioSource 组件:用于播放音频

3、游戏脚本Script

游戏脚本挂载在游戏对象下

类名必须与文件名相同

必须继承于 MonoBehaviour ,所有 Unity 脚本都继承于这个类

默认定义了一些事件函数,如 Start() , Update() ,会被 Unity 引擎自动调用

Start() 开始调用一次,可用于初始化;Update() 每帧调用,帧间隔不等,可用于更新游戏

显式设置帧率:Application.targetFrameRate = 50,实际上实际帧率仍有偏差

获取上一帧的间隔:Time.deltaTime

获取任意节点下的组件:

获取节点:GameObject obj = GameObject.Find("/path/of/target");

获取节点下的组件:SpriteRenderer comp = obj.GetComponent<SpriteRenderer>();

获取当前节点下的组件:

SpriteRenderer renderer = this.gameObject.GetComponent<SpriteRenderer>();

添加脚本组件的属性(参数):

public int number = 10;

public string helloMessage = "Hi";

只有 public 属性才在 Inspector 里显示

在 Inspector 里可以修改初始值

也可以添加引用类型的属性,如图片资源、游戏对象、组件

事件函数

不以 On 打头的,由系统主动调用

Awake() , Start(), Update(),  FixedUpdated()

以 On 打头的,是相应事件的回调函数

OnEnable(), OnDisable (), OnGUI() …

脚本的执行顺序

Execution Order :  脚本的执行顺序,即优先级

默认的执行顺序为无序,为0

执行顺序的设定:Project Settings | Script Execution Order

顺序值越小,则越优先。

4、坐标

节点的坐标用三维向量Vector3表示

transform.position = new Vector3(0, 1.0f, 0);

指定旋转角度时,用 eulerAngles 或者 localEulerAngles

transform.eulerAngles = new Vector3(0, 0, 90f);

世界坐标

World Space Position 以世界坐标系计算

transform.position = new Vector3(0, 1.0f, 0);  指定世界坐标

本地坐标

Local Space Position 以父节点的坐标系计算

transform.localPosition = new Vector3( 0, 1.0f, 0);  指定本地坐标

世界坐标(该物体在世界空间中的坐标)

屏幕坐标(通过屏幕观察,该物体在屏幕上的位置)

Vector3 pos = transform.position;

Vector3 screenPos = Camera.main.WorldToScreenPoint(worldPos);

获取屏幕坐标(左下角为屏幕坐标系的原点)

屏幕坐标的边界:Screen.width  Screen.height

5、物体的运动

坐标系

Space.Self 使用自己的坐标系 ( 默认值 )

Space.World 使用世界坐标系

transform.Translate(0, 0.02f, 0, Space.Self);

相对运动

transform.Translate( dx, dy, dz)    即在原位置上偏移 dx, dy, dz 的距离

沿自己的y轴方向进行改变

绝对运动(绝对改变)

transform.position = new Vector3(0, 1.0f, 0);

运行的方向

Vector3 face = this.transform.up;

Vector3 direction = target.transform.position - this.transform.position;

float angle = Vector3.SignedAngle(face, direction, Vector3.forward);

this.transform.Rotate(0, 0, angle);    //旋转与目标的夹角,从而转向目标

改变旋转的方向

6、向量

长度

float len = v.magnitude;

标准化

Vector3 a = new Vector3(3f, 4f, 0);

Vector3 b = a.normalized;

Debug.Log("标准化为: " + b.ToString( "F3" ));   F3为保留3位小数

几个常用的标准向量

向量夹角

Vector3 a = new Vector3(2, 2, 0);

Vector3 b = new Vector3(-1, 3, 0);

float angle = Vector3.SignedAngle(a, b, Vector3.forward);

将 a 向量逆时针旋转,到b向量所划过的角度

7、鼠标事件处理

鼠标事件

Input.GetMouseButtonDown(0)  检查鼠标按下事件

Input.GetMouseButtonUp(0)    检查鼠标抬起事件

Input.GetMouseButton(0)       检查鼠标状态 ( 是否是按下状态 )

获取的坐标为屏幕坐标

Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

Debug.Log("世界坐标: " + pos);

pos.z = 0;

屏幕坐标转化为世界坐标

执行逻辑

鼠标事件发生了,大家都知道

每一个游戏对象,都可以根据鼠标事件来做自己的处理。

8、预制体

预制体 Prefab,一般用于游戏对象的动态创建

使用预制体,可以快速创建多个相同的实例

修改预制体时,每一个实例都会自动更新

修改预制体实例,也会影响到预制体资源和所有的实例

动态创建实例

bullet = Instantiate(myPrefab)

创建一个实例,position与rotation与当前游戏对象相当,挂载场景根节点下

bullet = Instantiate(myPrefab, Transform parent )

创建一个实例,position与rotation与当前游戏对象相当,同时指定父节点

销毁实例

9、物理系统

刚体Rigidbody

Dynamic 普通刚体,有质量、有速度

Static    静态刚体,质量无穷大、无速度

( 适用于建筑物、地面等固定不动的物体)

Kinematic 运动学刚体,无质量

( 忽略物理规律的刚体,一般用于碰撞检测 )

碰撞体组件 Collider

碰撞检测(碰撞组件的Is Trigger)

碰撞事件回调

OnTriggerEnter2D :两个碰撞体开始相遇

OnTriggerStay2D : 两个碰撞体接触中

OnTriggerExit2D: 两个碰撞体分开

collision.gameObject 对方

collision.transform  对方的Transform组件

collision.name        对方节点的名称

collision.tag            对方节点的Tag

tag的设置Edit | Project Settings | Tags and Layers …

添加一个自定义的Tag ,如 Target

选中一个物体,在 Inspector 中选择适合的Tag

在碰撞回调中,通过 collision.tag 来识别对方身份

10、音频的播放

AudioSource 组件:用于播放音频

代码实例:

AudioSource audio = GetComponent<AudioSource>();

audio.Play();

AudioSource.Play() :如果正在播放中,则停止,从头开始播放

PlayOneShot ( clip ) :则新开一个播放

11、延时调用

invoke

Invoke ("Response",  3)     内部使用了 ‘反射机制’

Invoke 相关的 API

Invoke ( name )  :添加一个延时调用

CancelInvoke( name ) :取消延时调用

IsInvoking( name ) :检查一个延时调用是否在等待中 ..

InvokeRepeating( name, delay, interval) :延时调用、并重复执行 (定时器)

消息调用

第一种:

GameObject main = GameObject.Find("游戏主控")

MyGame myGame = main.GetComponent<MyGame>();

myGame.AddScore();

第二种:

GameObject main = GameObject.Find("游戏主控");

main.SendMessage("AddScore", 1);

12、UI

添加UI

UI事件处理

第一种:

Button 组件,可以直接添加 OnClick 点击处理

第二种:

在脚本中实现 IPointerDownHandler 接口

Unity 2D学习总结相关推荐

  1. Unity 2D 学习笔记:游戏实例Sunnyland

    Unity 2D 学习笔记:游戏实例Sunnyland 01安装软件&导入素材 02编辑素材&Tilemap 03图层layer&角色建立 04角色移动 05角色方向& ...

  2. Unity 2D 学习手札 (一) 基本概念

    前言 刚开始学习 Unity 2D,看了几本书,或许书中重点都不在 2D 的部分,总是不得其门而入,无法快速的上手,充满挫折.后来在网络上查了一些文章,东拼西凑,才慢慢体会其要意,今将心得记载于此,以 ...

  3. Unity 2D 学习手札(六)Sprite 动画

    简单的范例 如上图,在等待使用者作答时,播放左右晃头的等待动画,使用者作答时,判断答对或答错,分别播放不同的动画及音效.播放完毕,继续左右晃头. 图片制作 左右晃头要准备三个状态的图,分别为摆左.正中 ...

  4. UNITY 2D学习笔记(二):C#脚本编写

    Update(更新帧): 简而言之:Update可以受到变速齿轮,机器性能影响 FixedUpdate用于刚体物理计算,不受影响 假设:处理高速物体或微观检测Edit->ProjectSetti ...

  5. Unity 2D 游戏开发 官方视频学习顺序

    unity2D的官方tutorial上已经有了不少的教程视频,都看一遍的话最起码也知道unity能干什么了. 自学这段时间里我翻译不少,之前也发过,都放到b站了,基本都是1080p的,而且压制后文件不 ...

  6. Unity 2D游戏开发快速入门(内部资料)

    Unity 2D游戏开发快速入门(内部资料) 试读样张:http://pan.baidu.com/s/1hqh5oqw Unity 2D游戏开发快速入门4 前  言 Unity是一款综合的游戏开发工具 ...

  7. unity多人游戏_如何使用Unity 2D和镜像构建多人纸牌游戏(更新)

    unity多人游戏 Working with the canvas in Unity 2D can feel complicated at first, particularly if you're ...

  8. Unity 2D教程: 滚动,场景和音效

    http://www.tairan.com/archives/7074 原文地址:http://www.raywenderlich.com/71029/unity-4-3-2d-tutorial-sc ...

  9. UNITY 2D入门基础教程 (一)

    如果用以前版本的Unity做2D游戏,虽然能做,但是要费很多周折. 比如你可以将一张纹理赋予一个"面片"网格,然后用脚本控制它的动画调整它的位移.如果你要使用物理引擎,那么还要将这 ...

最新文章

  1. Git Gui for Windows的建库、克隆(clone)、上传(push)、下载(pull)、合并(转)
  2. Playmaker全面实践教程之Playmaker常用工具
  3. webstom新增vue模板
  4. vmware克隆虚拟机
  5. Netty:另一种Web(套接字)服务器
  6. 10本书,搞定这门全球1000万程序员在用的编程语言
  7. oracle:oracle基础知识(二)
  8. web前端基础之Bootstrap(三) - 插件
  9. 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性...
  10. 云计算项目实战——系统API模块
  11. alembic生成数据库升级脚本
  12. 分享一些经典的特效效果,希望对大家有帮助
  13. Stolz定理及其证明
  14. 二代征信在风控流程中的使用
  15. java线程池正确使用姿势
  16. 微信公众号开发系列三:响应关注和取关事件
  17. 如何查询电脑本机出厂序列号
  18. C/C++编程学习 - 第19周 ③ 不与最大数相同的数字之和
  19. 分析bootstrap class path not set in conjunction with -source 1.6
  20. 如何看待并夕夕公司离职员工在脉脉上疯狂吐槽前公司?

热门文章

  1. WPS excel 实现查询返回所有符合的结果,将结果拼成一个字符串
  2. OC/Swift 技术 股票详情
  3. 入职培训—中国电子信息产业发展研究院(赛迪集团)简介
  4. 何为TLC、MLC、SLC?【转】
  5. Compaq笔记本的新功能
  6. 目前需要开发出一个功能,对比查找并标注出两篇文章中类似的段落或者词句,有什么开源项目有这个功能吗? 其实有点像论文查重的功能,有论文查重的比较通用的开源项目推荐吗?...
  7. about.php啥意思,about.php
  8. 论文作者和论文摘要阐述
  9. 试写一算法,自大至小依次输出顺序读入的三个整数X,Y和Z的值
  10. 考试管理系统/在线考试系统