Unity教程学习笔记-GUI-lesson3-7
Unity教程学习笔记-GUI
[lesson3] [lesson4][lesson5][lesson6] [lesson7]
–整理0327
1.安装环境:
Visual Studio2013
Unity5.6.1f1
2.GUI教程目录
1.布局模式
2. 创建UI
3. 创建预制体Prefab
4. 加载预制体Prefab
5. 创建脚本Script
6. 控制UI
7. 持有canvas的引用
Lesson 3:创建预制体
- 创建Prefab:
第一步:在Assets空白处中,右键创建Folder,命名为Prefab。
Folder:创建一个文件
C# Script:创建一个脚本
第二步:可将之前创建的image重命名为I001
选中image,按下快捷键F2,对image重命名为I001
第三步:将i001拖到Prefab中。
直接用鼠标将I001拖到Prefab文件夹里。
Lesson 4:加载预制体
- 通过Resources加载Prefab方法:
第一步:在Prefab中创建Folder,命名为Resources
本步骤于lesson3已表述,不多言,上结果图。
第二步:将i001拖到Resources中
结果图如下:
第三步:在 Assets中创建Folder,命名为Script。存放脚本文件
结果图如下:
第四步:在Script中创建C# script,命名为LoadRes.c#。
在Assets空白处中,右键点击Create创建C# Script,命名为LoadRes。
C# Script:创建一个脚本
Lesson5: 创建脚本Script
- 两种引用方法值引用和对象引用,值引用:直接传值,通过copy。对象引用:传一个对象,通过对象引用,不通过copy,C#与Java均通过对象引用。
第一步:生成对象。在类里面定义Image img_res;
双击LoadRes.c#,进入VS2013后,在类里面定义Image img_res;
Image imageres;
Lesson 6:控制UI
- 生命周期: void Awake(){ }; void Start(){ }; void Update(){ }; void OnDestroy(){ }; void OnApplicationQuit(){ };
第一步:打印w字符串,在唤醒void Awake()里面通过Debug.Log()方法,打印出字符串。
void Awake(){
Debug.Log("w");
}
第二步:ctrl+R保存脚本,在Hierarchy创建Folder命名为LocalManager。并在之下创建create empty并命名为ResourcesManager,用以管理资源,方便之后管理使用。
第三步:将脚本LoadRes.c#拖入ResourcesManager,运行即可。
运行点击
拖入后,脚本LoadRes.显示已挂上,如下图所示。
Lesson 7:持有canvas的引用
第一步:在Hierarchy的LocalManager之下创建create empty并命名为CanvasManager
第二步:将创建脚本CanvasManagerEX.c#拖入CanvasManager
第三步:引用:
首先:定义公有变量GameObject canvas1;
通过GameObject.find(“节点名”)找到节点canvas
通过Resources.Load<泛型>(“资源名”);找到资源I001
通过GameObject.Instantiate(资源, 父节点);生成节点resimage2
生成节点可重命名为I002
//以下代码是通过获取资源I001,在canvas下生成I002、I003、I004,并在I002下生成子节点b002
using UnityEngine.UI; // image 的引用包
public class CanvasManagerEX : MonoBehaviour {
public GameObject canvas1; // 公有变量
public GameObject canvas2;
Image imageres; // 全局变量
Image resimage2;
Image resimage3;
Image resimage4;
Image resimageb2;
void Awake()
{
canvas1 = GameObject.Find("Canvas");
// 通过GameObject.find("节点名")找到节点canvas
imageres = Resources.Load<Image>("I001");
// 通过Resources.Load<泛型>("资源名");找到资源I001
resimage2=GameObject.Instantiate(imageres, canvas1.transform);
// 通过GameObject.Instantiate(资源, 父节点);
resimage2.name = "I002";
// 生成节点可重命名为I002
resimage3 = GameObject.Instantiate(imageres, canvas1.transform);
resimage3.name = "I003";
resimage4 = GameObject.Instantiate(imageres, canvas1.transform);
resimage4.name = "I004";
resimageb2 = GameObject.Instantiate(imageres, resimage4.transform);
// 要生成i004节点下的子节点b002,父节点需要变换为i004也就是 resimage4
resimageb2.name = "b002";
}