Auto Layout Syste

Auto Layout System 是基於Rect Transform Layout System 之上的系統,自動調整一個或多個的元素大小、位置、間格,又分為 Layout Controllers(父物件) 與 Layout Elements(子物件) 兩部分,一個簡單的 Auto Layout 架構如下 (此處介紹理論,實作留到後面)

AutoLayoutSystem_01

Layout Element (子物件)

代表著每個元素的大小,擁有資訊如下

Minimum Widt最小寬度
Minimum Heigh
Preferred Widt優先寬度
Preferred Heigh
Flexible Widt彈性寬度
Flexible Heigh

點選UI後,可以在 Inspector 最下方切換為 Layout Properti...

点击进入阅读全文

一、ImagSource Image(图像源):纹理格式为Sprite(2D and UI)的图片资源(导入图片后选择Texture Type为Sprite(2D and UI))。Color(颜色):图片叠加色。Material(材质):图片叠加材质。Raycast Target(射线投射目标):是否作为射线投射目标。Image Type(图片显示类型):Simple(基本的),图片整张全显示...点击进入阅读全文

在Unity中我们将2D图片导入进来的时候,会选择图片的保存格式,根据不同的格式在Unity中具有不同的用途。所以在我们导入图片之后都需要进行一些设置。Texture Type : 设置导入图片的使用途径通常我们在使用图片进行GUI或者2D精灵的使用时则选择Sprite选项。Sptrite Mode :设置图片的形式Single:在这种模式下将 sprite图像将被用于单独的一个【就是一张ima...点击进入阅读全文

一、基本要点

RectTransform继承于Transform,在 Transform 基础上,RectTransform 增加了 轴心(pivot)、锚点(anchors)、和 尺寸变化量(sizeDelta)。其中anchors和pivot都是坐标原点在左下角的0-1向量空间,0-1代表的是比例。anchors的向量空间是子UI相对父UI的比例位置,pivot的向量空间是相对UI本身的比例位置...点击进入阅读全文

一、Canvas简介

Canvas画布是承载所有UI元素的区域。Canvas实际上是一个游戏对象上绑定了Canvas组件。所有的UI元素都必须是Canvas的自对象。如果场景中没有画布,那么我们创建任何一个UI元素,都会自动创建画布,并且将新元素置于其下。

二、Canvas画布参数与应用

1.创建画布

当你创建任何一个UI元素的时候,都会自动创建画布。也可以主动创建一张画布:点击GameObject-&g...点击进入阅读全文

本节要点

1.协同程序简介1.什么是协同程序协同程序,简称“协程”。在脚本运行过程中,需要额外的执行一些其他的代码,这个时候就可以将“其他的代码”以协程的形式来运行。类似于开启了一个线程,但是协程不是线程。2.协同程序的使用前提只有在继承了“MonoBehaviour”这个类的子类中才能使用相关的协程方法。2.协同程序语法格式1.定义协同程序协同程序就是一个“代码片段”,往往我们需要将这个代码片段封装成一个方法,或者称之为函数。IEnumerator Task3(){yield return new WaitForSeconds (2); Debug.Log ("任务 3");}参数说明:IEnumerator:协同程序的返回值类型;yield return:协同程序返回 xxxxx;new WaitForSeconds (秒数):实例化一个对象,等待多少秒后继续执行。这个 Task3()的作用就是等待两秒后,继续执行任务 3.2.开启协同程序StartCoroutine(“协同程序方法名”);这个 StartCoroutine 有三种重载形式,目前先只介绍这一种。3.停止协同程序StopCoroutine(“协同程序方法名”);这个 StopCoroutine 也有三种重载形式,目前先只介绍这一种。

关键代码

CoroutinTes
public class CoroutinTest : MonoBehaviour {// Use this for initializationvoid Start () {//普通程序 从上往下执行;//Debug.Log("任务1");//Debug.Log("任务2");//Debug.Log("任务3");//Debug.Log("任务4");//协同程序Debug.Log("任务1");Debug.Log("任务2");//Task3();//不是这样调用协同程序的StartCoroutine("Task3");//开启协程;  跟之前线程不同的是 这是字符串的方法名Debug.Log("任务4");}IEnumerator Task3() {//要注意协同程序返回值类型//等待两秒后执行;yield return new WaitForSeconds(2);//协同程序返回值格式 yield returnDebug.Log("任务3");yield return new WaitForSeconds(2);//协同程序返回值格式 yield return,为了测试按下空格键后是否停止执行协程;Debug.Log("任务5");}// Update is called once per frame//通过按键停止协程的执行void Update(){if (Input.GetKeyDown(KeyCode.Space)){StopCoroutine("Task3");}}}

小结

点击进入阅读全文

射线是在三维世界中从一个点沿一个方向发射的一条无限长的线。在射线的轨迹上,一旦与添加了碰撞器的模型发生碰撞,将停止发射。我们可以利用射线实现子弹击中目标的检测,鼠标点击拾取物体等功能。1.Physics.Raycas
public static bool Raycast(Vector3 origin, Vector3 direction, float maxDistance = Mathf.Inf...
点击进入阅读全文