學(xué)習(xí) Unity GUI筆記,有各種學(xué)習(xí)資料網(wǎng)址!
1.http://www.wyzc.com/Course/Course/showAction/id/16352/center/0 視頻學(xué)習(xí)資料。。
http://www.easyar.cn/view/docs/Getting-Started/Getting-Started-with-EasyAR.html 官方代碼
- http://weibo.com/Edstick?is_hot=1 AR 提取
-
http://edu.manew.com/course/183 蠻牛
C#
基本數(shù)據(jù)類型,
整數(shù)
Int uint
Long ulong
Float double
Boll ture false
復(fù)合數(shù)據(jù)類型
Struct person{
String m_name ;
Int m_age l
String m_sex;
}
Enuw weekday{
Sunday,Mondaym,Tuesday,Wednesdar ,Thursday ,Friday,Saturday
}
Class New 來初始化,interface 借口,delegate,array.
(1)
現(xiàn)在都用這個(gè)UGUI高級(jí), gui低級(jí)。
第一個(gè)選項(xiàng)啥意思,downloadlayout! 我選擇了這個(gè)!
第一個(gè)創(chuàng)建butt的UGUI的程序
OnGuI 系統(tǒng)會(huì)自己去調(diào)用,GUI 是一個(gè)框架吧。。
void OnGUI(){
if (GUI.Button (new Rect (0f, 0f, 200f, 200f), "GUI_BUTTON")) {
框架,屬性,結(jié)構(gòu)體。名字,事件。
Debug.Log ("我被點(diǎn)擊了");
}
}
}
//UI設(shè)計(jì)。。
Create· 下UI創(chuàng)建button , 導(dǎo)入圖片,設(shè)置texture Type 2d And UI,設(shè)置set Navitin size 跟圖片一樣大。
//上面那個(gè)怎么弄啊。。
(2)
Canvas 畫布,就相當(dāng)于一個(gè)windon
屬性。。
2D UI ,ovelay 始終在屏幕前方 沒有顯示2D 3D的效果。
Camera 2D 三D綁定 相機(jī)。。
world space 直接3d
(3)
textUI 控件。
uing 導(dǎo)入頭文件
void start (){
程序一開始調(diào)用的。
}
void update(){
字面理解為更新時(shí)候調(diào)用
}
標(biāo)簽格式。。XML 都是成對(duì)的。。!
<size = 50></size>。設(shè)置字體大小。
<b></b>,<i><i>
<color = #ffffff><color>
引入對(duì)象,transform.getCo,ponent<對(duì)象>.屬性 = "賦值" + 拼接 反正一切屬性,都是寫在""這個(gè)里面。對(duì)象的話要用《》來引用。
富文本屬性 rech text ,勾選的。。!
(4)
image組件 ,圖片
Material 素材 要?jiǎng)?chuàng)建一個(gè)material 然后選擇UI 才能正常顯示。。
勾選屬性。。
Simple 等比縮放,
Sliced 九宮格縮放,這個(gè)設(shè)置圖片,拉伸。。
Titled 平鋪 ,不會(huì)被拉伸,而是鋪滿 這個(gè)設(shè)計(jì)尺寸。。!
Filled 動(dòng)畫填充, 用來做技能ID 冷卻時(shí)間的。。!fill Method 填充的方法。。 fill OriGin 方向從哪里開始。。主要是360 method
1 4 可以選擇 設(shè)置圖片大小相同。。。
(5)RawImage 控件。大型的Image 上面可以添加視圖的。。!
該組件可以用來顯示任意紋理。包括RenderTexTure .Movie Texture
基本 屬性
1. TexTure紋理 要顯示的紋理
2. Color顏色 : 如果TeX Ture 是空的,那么久=會(huì)使用當(dāng)前設(shè)置顏色,來填充矩形區(qū)域
3. Material 材質(zhì)球,可以選擇UI類型的shader,來對(duì)其賦值
4. UV Rect UV 矩形:設(shè)置紋理顯示區(qū)域。。
和Image 的區(qū)別多了 一個(gè)texture 這個(gè)屬性。。!
實(shí)際的開發(fā)中用的比較少。。!
1. Button 控件。
設(shè)置狀態(tài),transtion, 有四個(gè)狀態(tài)。
分為四種狀態(tài) ,正常 ,鼠標(biāo)在按鈕上,點(diǎn)擊,失效。
動(dòng)畫,點(diǎn)擊創(chuàng)建一個(gè)自動(dòng)的按鈕。。!生成一個(gè)動(dòng)畫文件。。
然后在點(diǎn)擊,Windows 下的動(dòng)畫。。 在點(diǎn)擊當(dāng)前的對(duì)象。。進(jìn)行動(dòng)畫編輯。。
點(diǎn)擊事件。
創(chuàng)建一個(gè)文件。對(duì)button進(jìn)行關(guān)聯(lián),點(diǎn)擊屬性找對(duì)象,然后在類里面的方法。。
文件代碼里面寫.
Using UnityEngine.UI;導(dǎo)入系統(tǒng)UI控件礦建
Transform.GetComponent<Button>().onClick.AddListener(TowClock);onCick.addlistener是什么意思?
(6)Toggle *
多了一個(gè)backgroud 和一個(gè)label屬性,label里面有字體富文本屬性。
Background 是圖片的背景,都是image屬性,可以按照image來設(shè)置。Checkmack小圖標(biāo)的一個(gè)屬性。。勾選的屬性。
設(shè)置 toggle group 進(jìn)行單選、
代碼實(shí)現(xiàn)
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Toggle_01 : MonoBehaviour {
// Use this for initialization
void Start () {
transform.GetComponent<Toggle> ().onValueChanged.AddListener (changevalue);
}
public void changevalue(bool aselct){
if (aselct) {
Debug.Log ("一開始點(diǎn)擊了");
} else {
Debug.Log ("又被點(diǎn)擊了一下");
}
Debug.Log ("toggle被點(diǎn)擊了");
}
// Update is called once per frame
void Update () {
}
}
按鈕的事件監(jiān)聽。。
(7)Dropdown *
下拉列表!不可以滑動(dòng)的。直接是固定的。。!
右邊按鈕 點(diǎn)擊+號(hào),添加options
然后就是代碼的添加 操作itme,主要學(xué)怎么應(yīng)用。。!
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class DropDown : MonoBehaviour {
public Dropdown MyDropdown;
// Use this for initialization
void Start () {
Dropdown.OptionData _data1 = new Dropdown.OptionData ();
_data1.text = "選擇1";
Dropdown.OptionData _data2 = new Dropdown.OptionData ();
_data2.text = "選擇2";
Dropdown.OptionData _data3 = new Dropdown.OptionData ();
_data3.text = "選擇3";
Dropdown.OptionData _data4 = new Dropdown.OptionData ();
_data4.text = "選擇4";
//MyDropdown.options.Add()
//引用的是unity的dropdown ,直接操作,他添加的是Dropdown.OptionData _data2;
MyDropdown.options.Add (_data1);
MyDropdown.options.Add (_data2);
MyDropdown.options.Add (_data3);
MyDropdown.options.Add (_data4);
//onvaluechangged
MyDropdown.onValueChanged.AddListener (Onselectindex);
}
// Update is called once per frame
void Update () {
}
//他需要一個(gè)int 32的
public void Onselectindex (int index){
Debug.Log ("當(dāng)前的下標(biāo)=" + index.ToString () + "選項(xiàng)名字" + MyDropdown.captionText);
}
(8)slider 滑塊
綁定監(jiān)聽事件。。
public class Myslider : MonoBehaviour {
// Use this for initialization
void Start () {
// transform.GetComponent<Slider> ().onValueChanged.AddListener (myvalueChange);
}
// Update is called once per frame
void Update () {
}
public void myvalueChange (float value){
Debug.Log ("當(dāng)前的值" + value.ToString());
}
}
(9)ScrollBar滑動(dòng)條
和slider 邏輯一樣。組件的介紹
和事件的 響應(yīng)。
每一個(gè)控件都有一個(gè)接口方法, 而且都可以進(jìn)行關(guān)聯(lián),或者是直接進(jìn)行賦值的一個(gè)接口。。!
接口的方法都是可以寫的!可以再代碼里面重寫。。UI 會(huì)自己調(diào)用的。。!
(10)inputfilter 就是文本輸入框
他有兩個(gè)輸入方法,接口。。!一個(gè)結(jié)束 和一個(gè)在輸入的時(shí)候進(jìn)行調(diào)用的。。!
(11)scrollerct ** 牽扯到自己定對(duì)象。。!
這個(gè)明天弄。搞不定。。。
這個(gè)總體來說還是比較難得,首先你要搞清楚 圖層的渲染順序
還有就是弄明白,每個(gè)屬性的作用,和進(jìn)行關(guān)聯(lián)。
共有三個(gè)對(duì)象。!
Scrollrect 滾動(dòng)comtent,關(guān)聯(lián)滾動(dòng)條, 下面有mack ->mack對(duì)象關(guān)聯(lián)->image對(duì)象,遮罩完成。->BG 設(shè)置圖片、->創(chuàng)建scrollbar ;
(12)GridLayoutGroup 用來布局很多類型的集合的。。。
他是父視圖直接設(shè)置尺寸,而且都是等比的。。!
(13)Hoirztall
水平組件,運(yùn)行我們定制水平Item的大小。。layout elment 來控制。。!
(14)VerticalLayoutgroup
垂直組件,允許我們定位item的大小,kayout ekment 來控制。
縮放 和 邊距的距離的屬性。
(15)
Pivot 中心點(diǎn)的兩個(gè)作用
1. 控制著recttransform 的psX psY 與Anchor的相對(duì)距離
2. 解決屏幕自適應(yīng)的。。!
3. 只往一個(gè)方向進(jìn)行拉伸,比如 只往左/右/下/上 作單向拉伸;
(16)實(shí)戰(zhàn) SD冷卻圖。。
using UnityEngine;
using System.Collections;
導(dǎo)入U(xiǎn)I框架
using UnityEngine.UI;
public class SDskills : MonoBehaviour {
引入U(xiǎn)nity 圖形 ,聲明對(duì)象
public Button Mybutton;
public Image Myimage;
public Text McdText;
為什么這個(gè)用const呢?
public const float MAX_CODE_TIME = 3;
設(shè)置一個(gè)浮點(diǎn)為0 來記時(shí)
private float curTime = 0;
// Use this for initialization
void Start () {
首先調(diào)用遮蔽層,設(shè)置為nil;
Endskill ();
點(diǎn)擊事件,onClick.Addlistener (方法名字);
Mybutton.onClick.AddListener (stactButtoncilk);
}
// Update is called once per frame
這個(gè)方法什么時(shí)候調(diào)用啊!
void Update () {
如果遮蔽層隱藏。
if (false == Mybutton.interactable) {
如果myimage.fillAmount value 大于等于1 或者大于0
if(Myimage.fillAmount <= 1f &&Myimage.fillAmount> 0f){
這句話的意思就是取當(dāng)前的值;
curTime += Time.deltaTime;
最大值-當(dāng)前值 % 最大值 = 圖片的一個(gè)比例值。
Myimage.fillAmount = (MAX_CODE_TIME - curTime) / MAX_CODE_TIME;
這句話是什么意思?
McdText.text = Mathf.CeilToInt (MAX_CODE_TIME - curTime).ToString ();
if(Myimage.fillAmount == 0){
Endskill ();
}
}
}
}
void stactButtoncilk (){
StartSkill ();
}
開始調(diào)的方法
void StartSkill(){
Mybutton.interactable = false;
Myimage.fillAmount = 1f;
McdText.text = MAX_CODE_TIME.ToString ();
curTime = 0f;
}
結(jié)束的時(shí)候調(diào)。
void Endskill(){
Mybutton.interactable = true;
Myimage.fillAmount = 0f;
McdText.text = string.Empty;
curTime = 0f;
}
}
(17)進(jìn)度條實(shí)現(xiàn)跳轉(zhuǎn)方法。。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
系統(tǒng)提供的異步加載頁面 方法列表
using UnityEngine.SceneManagement;
public class porgess : MonoBehaviour {
進(jìn)度條
public Image myimageview;
返回的是一個(gè)可選的異步。
private AsyncOperation masync;
// Use this for initialization
記錄進(jìn)度條的值
private int cyrprogessVal;
public Text text;
void Start () {
StartCoroutine (LoadScene());
}
//IEnumerable 調(diào)錯(cuò)方法了。。!
異步加載方法
IEnumerator LoadScene(){
masync = SceneManager.LoadSceneAsync ("navgtionVC");
masync.allowSceneActivation = false;
yield return masync;
}
// Update is called once per frame
void Update () {
Null 沒nil
if(masync == null){
return;
}
int propressvalue = 0;
//zhege shuxing nali lai de !
if (masync.progress < 0.9f) {
propressvalue = (int)masync.progress * 100;
} else {
propressvalue = 100;
}
if(cyrprogessVal<propressvalue){
cyrprogessVal++;
}
text.text = cyrprogessVal+"%";
myimageview.fillAmount = cyrprogessVal / 100f;
if(cyrprogessVal == 100){
masync.allowSceneActivation = true;
}
}
}
跳轉(zhuǎn)的頁面要設(shè)置File ,buldseting;
IEnumerator 這個(gè)不要寫錯(cuò)了。。!
SseneManager.loadSceneAsync 是系統(tǒng)提供的方法進(jìn)行跳轉(zhuǎn)界面的,,!
你現(xiàn)在要弄清楚 圖層的渲染順序。。!這個(gè)是重點(diǎn)。。!
背包實(shí)戰(zhàn),圖像渲染的順序。。!
1. GameBG 都是在這個(gè)imageview下操作的。。!
2. 他里面有一個(gè)滑動(dòng)的view;scollerrect ,Viewpoint 視圖位置,遮罩視圖,滑動(dòng)的內(nèi)容。。
3. 遮罩里面包括布局類,布局類還牽扯到一個(gè)contens of size 得給他掛一個(gè)。。!這個(gè)就可以滑動(dòng)到最下面。。!記得操作Perferred size 自動(dòng)幫你換算里面的內(nèi)容。。!
總結(jié)。。!
基本UI的操作都是差不多的,!比較難得就是滾動(dòng)視圖了。。!其實(shí) 這都是操作圖片。。調(diào)用借口。。!學(xué)了跳轉(zhuǎn)界面加載界面,界面之間的通信呢? 還有視圖的消失,還有生命周期,都還不知道。。!
基本操作,創(chuàng)建UI,然后編寫腳本進(jìn)行綁定,操作對(duì)象,進(jìn)行賦值!就是C#的語法,數(shù)據(jù)類型,不明白。。! 要深入學(xué)習(xí)的話還是要學(xué)習(xí)C#的!