學習 Unity GUI筆記,有各種學習資料網址!
1.http://www.wyzc.com/Course/Course/showAction/id/16352/center/0 視頻學習資料。。
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#
基本數據類型,
整數
Int uint
Long ulong
Float double
Boll ture false
復合數據類型
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)
現在都用這個UGUI高級, gui低級。
第一個選項啥意思,downloadlayout! 我選擇了這個!
第一個創建butt的UGUI的程序
OnGuI 系統會自己去調用,GUI 是一個框架吧。。
void OnGUI(){
if (GUI.Button (new Rect (0f, 0f, 200f, 200f), "GUI_BUTTON")) {
框架,屬性,結構體。名字,事件。
Debug.Log ("我被點擊了");
}
}
}
//UI設計。。
Create· 下UI創建button , 導入圖片,設置texture Type 2d And UI,設置set Navitin size 跟圖片一樣大。
//上面那個怎么弄啊。。
(2)
Canvas 畫布,就相當于一個windon
屬性。。
2D UI ,ovelay 始終在屏幕前方 沒有顯示2D 3D的效果。
Camera 2D 三D綁定 相機。。
world?。螅穑幔悖濉≈苯樱常?br>
(3)
textUI 控件。
uing 導入頭文件
void?。螅簦幔颍簟。ǎ?br>
程序一開始調用的。
}
void?。酰穑洌幔簦澹ǎ?/p>
字面理解為更新時候調用
}
標簽格式。。XML 都是成對的。。!
<size?。健。担埃荆迹螅椋澹?。設置字體大小。
<b></b>,<i><i>
<color?。健。#妫妫妫妫妫妫荆迹悖铮欤铮颍?/p>
引入對象,transform.getCo,ponent<對象>.屬性 = "賦值" + 拼接 反正一切屬性,都是寫在""這個里面。對象的話要用《》來引用。
富文本屬性 rech text ,勾選的。。!
(4)
image組件 ,圖片
Material 素材 要創建一個material 然后選擇UI 才能正常顯示。。
勾選屬性。。
Simple 等比縮放,
Sliced 九宮格縮放,這個設置圖片,拉伸。。
Titled 平鋪 ,不會被拉伸,而是鋪滿 這個設計尺寸。。!
Filled 動畫填充, 用來做技能ID 冷卻時間的。。!fill Method 填充的方法。。 fill OriGin 方向從哪里開始。。主要是360 method
1 4 可以選擇 設置圖片大小相同。。。
(5)RawImage 控件。大型的Image 上面可以添加視圖的。。!
該組件可以用來顯示任意紋理。包括RenderTexTure .Movie Texture
基本 屬性
1. TexTure紋理 要顯示的紋理
2. Color顏色 : 如果TeX Ture 是空的,那么久=會使用當前設置顏色,來填充矩形區域
3. Material 材質球,可以選擇UI類型的shader,來對其賦值
4. UV Rect UV 矩形:設置紋理顯示區域。。
和Image 的區別多了 一個texture 這個屬性。。!
實際的開發中用的比較少。。!
1. Button 控件。
設置狀態,transtion, 有四個狀態。
分為四種狀態 ,正常 ,鼠標在按鈕上,點擊,失效。
動畫,點擊創建一個自動的按鈕。。!生成一個動畫文件。。
然后在點擊,Windows 下的動畫。。 在點擊當前的對象。。進行動畫編輯。。
點擊事件。
創建一個文件。對button進行關聯,點擊屬性找對象,然后在類里面的方法。。
文件代碼里面寫.
Using UnityEngine.UI;導入系統UI控件礦建
Transform.GetComponent<Button>().onClick.AddListener(TowClock);onCick.addlistener是什么意思?
(6)Toggle *
多了一個backgroud 和一個label屬性,label里面有字體富文本屬性。
Background 是圖片的背景,都是image屬性,可以按照image來設置。Checkmack小圖標的一個屬性。。勾選的屬性。
設置 toggle group 進行單選、
代碼實現
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 ("一開始點擊了");
} else {
Debug.Log ("又被點擊了一下");
}
Debug.Log ("toggle被點擊了");
}
// Update is called once per frame
void Update () {
}
}
按鈕的事件監聽。。
(7)Dropdown *
下拉列表!不可以滑動的。直接是固定的。。!
右邊按鈕 點擊+號,添加options
然后就是代碼的添加 操作itme,主要學怎么應用。。!
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 () {
}
//他需要一個int 32的
public void Onselectindex (int index){
Debug.Log ("當前的下標=" + index.ToString () + "選項名字" + MyDropdown.captionText);
}
(8)slider 滑塊
綁定監聽事件。。
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 ("當前的值" + value.ToString());
}
}
(9)ScrollBar滑動條
和slider 邏輯一樣。組件的介紹
和事件的 響應。
每一個控件都有一個接口方法, 而且都可以進行關聯,或者是直接進行賦值的一個接口。。!
接口的方法都是可以寫的!可以再代碼里面重寫。。UI 會自己調用的。。!
(10)inputfilter 就是文本輸入框
他有兩個輸入方法,接口。。!一個結束 和一個在輸入的時候進行調用的。。!
(11)scrollerct ** 牽扯到自己定對象。。!
這個明天弄。搞不定。。。
這個總體來說還是比較難得,首先你要搞清楚 圖層的渲染順序
還有就是弄明白,每個屬性的作用,和進行關聯。
共有三個對象。!
Scrollrect 滾動comtent,關聯滾動條, 下面有mack ->mack對象關聯->image對象,遮罩完成。->BG 設置圖片、->創建scrollbar ;
(12)GridLayoutGroup 用來布局很多類型的集合的。。。
他是父視圖直接設置尺寸,而且都是等比的。。!
(13)Hoirztall
水平組件,運行我們定制水平Item的大小。。layout elment 來控制。。!
(14)VerticalLayoutgroup
垂直組件,允許我們定位item的大小,kayout ekment 來控制。
縮放 和 邊距的距離的屬性。
(15)
Pivot 中心點的兩個作用
1. 控制著recttransform 的psX psY 與Anchor的相對距離
2. 解決屏幕自適應的。。!
3. 只往一個方向進行拉伸,比如 只往左/右/下/上 作單向拉伸;
(16)實戰 SD冷卻圖。。
using UnityEngine;
using System.Collections;
導入UI框架
using UnityEngine.UI;
public class SDskills : MonoBehaviour {
引入Unity 圖形 ,聲明對象
public Button Mybutton;
public Image Myimage;
public Text McdText;
為什么這個用const呢?
public const float MAX_CODE_TIME = 3;
設置一個浮點為0 來記時
private float curTime = 0;
// Use this for initialization
void Start () {
首先調用遮蔽層,設置為nil;
Endskill ();
點擊事件,onClick.Addlistener (方法名字);
Mybutton.onClick.AddListener (stactButtoncilk);
}
// Update is called once per frame
這個方法什么時候調用?。?br> void Update () {
如果遮蔽層隱藏。
if (false == Mybutton.interactable) {
如果myimage.fillAmount value 大于等于1 或者大于0
if(Myimage.fillAmount <= 1f &&Myimage.fillAmount> 0f){
這句話的意思就是取當前的值;
curTime += Time.deltaTime;
最大值-當前值 % 最大值 = 圖片的一個比例值。
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 ();
}
開始調的方法
void StartSkill(){
Mybutton.interactable = false;
Myimage.fillAmount = 1f;
McdText.text = MAX_CODE_TIME.ToString ();
curTime = 0f;
}
結束的時候調。
void Endskill(){
Mybutton.interactable = true;
Myimage.fillAmount = 0f;
McdText.text = string.Empty;
curTime = 0f;
}
}
(17)進度條實現跳轉方法。。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
系統提供的異步加載頁面 方法列表
using UnityEngine.SceneManagement;
public class porgess : MonoBehaviour {
進度條
public Image myimageview;
返回的是一個可選的異步。
private AsyncOperation masync;
// Use this for initialization
記錄進度條的值
private int cyrprogessVal;
public Text text;
void Start () {
StartCoroutine (LoadScene());
}
//IEnumerable 調錯方法了。。!
異步加載方法
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;
}
}
}
跳轉的頁面要設置File ,buldseting;
IEnumerator 這個不要寫錯了。。!
SseneManager.loadSceneAsync 是系統提供的方法進行跳轉界面的,,!
你現在要弄清楚 圖層的渲染順序。。!這個是重點。。!
背包實戰,圖像渲染的順序。。!
1. GameBG 都是在這個imageview下操作的。。!
2. 他里面有一個滑動的view;scollerrect ,Viewpoint 視圖位置,遮罩視圖,滑動的內容。。
3. 遮罩里面包括布局類,布局類還牽扯到一個contens of size 得給他掛一個。。!這個就可以滑動到最下面。。!記得操作Perferred size 自動幫你換算里面的內容。。!
總結。。!
基本UI的操作都是差不多的,!比較難得就是滾動視圖了。。!其實 這都是操作圖片。。調用借口。。!學了跳轉界面加載界面,界面之間的通信呢? 還有視圖的消失,還有生命周期,都還不知道。。!
基本操作,創建UI,然后編寫腳本進行綁定,操作對象,進行賦值!就是C#的語法,數據類型,不明白。。! 要深入學習的話還是要學習C#的!