1. 程式人生 > >UGUI的一些瑣碎知識點

UGUI的一些瑣碎知識點

   嗯,這裡記載了我最近學習的一些UGUI的知識,以後可能還會有擴充套件的,這算01吧

UGUI學習和分析

嗯,又到了更新部落格的時間,今天我將在這篇文件裡記載UGUI的部分基礎操作,未來的話可能會有更多的擴充,還是這句話,一起學習,一起成長

1.什麼是GUI

GUI也叫graphical user interface,即是使用者與遊戲進行互動的一個圖形視窗,包括揹包系統,任務列表,選單欄,控制移動的虛擬杆和控制按鈕,開始選單等等,我們都叫它GUI

2.Image的四種屬性

我們在UI設計種常用到Image,而它的四種屬性分別對應著不同的作用

1.simple 嗯,這種屬性就是圖片原本的樣子.

2.Sliced屬性假設我們想要將一個圖片放大,這時候它的邊框又不想放大,以免發生圖片模糊的情況,這時候我們就可以設定sliced屬性,通過sprite editor進行切割,這樣就可以自己設定縮放的位置了

3.tiled

這個屬性的作用是讓圖片平鋪整個Image

4.filled

這個屬性就是表示圖片顯示的方式了,修改fill amount,改變所佔面積

3.如何製作技能的冷卻效果

建立一個這樣的遊戲圖示,新增陰影在上面,給它一個button元件並且關聯到我們下面的指令碼,然後根據指令碼操作即可完成冷卻效果

4.

5.publicclassSkillTime : MonoBehaviour

{

6.publicfloat skillTime = 2;//技能時間

7.privateImage filled;//獲取陰影圖片

8.publicfloat timer = 0; //控制冷卻時間

9.privatebool isTouch = false;//判斷是否按下

10.

11.// Use this for initialization

12.void Start () {

13.filled = GameObject.Find("Filled").GetComponent<Image>();

14.

15.}

16.

17.// Update is called once per frame

18.void Update () {

19.if (isTouch == true)

20.{

21.timer += Time.deltaTime;

22.filled.fillAmount = (skillTime -timer) / skillTime;

23.if (timer >= skillTime)

24.{

25.timer = 0;

26.isTouch = false;

27.}

28.

29.

30.}

31.

32.

33.

34.}

35.publicvoid OnClick()

36.{

37.

38.isTouch = true;

39.

40.}

41.}

如果想要改變遊戲物體大小但是卻不想改動內部大小,可以在它上面建立一個空物體用來包裹,這樣每次改變的就會是空物體的大小了

這裡製作的是一個滑動框選擇關卡的案例,這裡記一下步驟

1.

我們呼叫素材建立一個圓,然後給它新增上Toggle屬性,把葉子賦值給Grafic屬性,這樣我們就可以點選它來勾選葉子了,然後我們將葉子複製三個一次排版,放在一個空物體下,我們叫它ToggleGroup,全選三個Toggle放在一組,這樣就可以實現單選的功能了

2.然後我們要將頁面的跳轉和這些單選按鈕繫結起來,這裡我們需要一個指令碼

這裡講一下指令碼思路

(1)我們需要繼承兩個介面IBeginDragHandler,IEndDragHandler

這兩個介面的作用就是控制頁面的拖拽,它們會在執行時候自動實現

(2)我們通過scrollRect.horizontalNormalizedPosition;來獲得滑鼠拖拽到的位置,建立一個數組儲存三個頁面應該在的位置,這裡我們獲得的是一個0-1的浮點值來儲存位置,通過計算絕對值的差值,通過比較差值來絕對我們將座標設定到什麼位置,在update方法裡控制頁面跳轉到的位置

(3)然後我們定義四個bool型別的方法,,通過檢測點選來決定跳轉到哪個位置陣列,再定義一個按鈕陣列,儲存哪個按鈕被點選,然後當滑鼠拖拽到相應位置時,按鈕陣列也會選擇相應的按鈕,通過對IsOn屬性的設定就可達到這種效果,當然我們定義的按鈕陣列需要再unity裡進行賦值

(4)至此,我們就可以實現滑鼠點選頁面的切換了

using System;

using System.Collections;

usingSystem.Collections.Generic;

using UnityEngine;

usingUnityEngine.EventSystems;

using UnityEngine.UI;

publicclassScrollpanelbutton : MonoBehaviour,IBeginDragHandler,IEndDragHandler {

//這裡是獲得scrollRect這個元件

privateScrollRect scrollRect;

//這裡三個值分別儲存三個頁面的位置

privatefloat[] ArrayList =newfloat[] { 0, 0.5f,1 };

privatefloat targetHorizontalPosition=0;

publicfloat speed = 10;

privatebool isDraging = false;

//定義一個數組儲存點選按鈕

publicToggle[] MovepageArray;

// Use this for initialization

void Start () {

scrollRect = GetComponent<ScrollRect>();

}

// Update is called once per frame

void Update () {

if(isDraging==false)

scrollRect.horizontalNormalizedPosition= Mathf.Lerp(scrollRect.horizontalNormalizedPosition,targetHorizontalPosition, Time.deltaTime * speed);

}

publicvoid OnBeginDrag(PointerEventData eventData)

{

isDraging = true;

}

publicvoid OnEndDrag(PointerEventData eventData)

{

isDraging = false;

float PosX = scrollRect.horizontalNormalizedPosition;//這個可以獲得到滑鼠當前拖拽到水平的什麼位置,用01的浮點數進行量化

int index = 0;

float offset = Mathf.Abs(PosX-ArrayList[index]);//這裡計算的是當前位置和我們定義位置的差值

for (int i = 1; i <ArrayList.Length; i++)

{

floatoffsetNew = Mathf.Abs(PosX -ArrayList[i]);//這裡判斷目前位置與定義頁首距離誰跟近,然後定義座標到更近的位置

if (offsetNew < offset)

{

index = i;

offset = offsetNew;

}

}

targetHorizontalPosition =ArrayList[index];

MovepageArray[index].isOn = true;

//scrollRect.horizontalNormalizedPosition =ArrayList[index];

}

publicvoid OnMovePage1(bool isOn)

{

if(isOn)

targetHorizontalPosition =ArrayList[0];

}

publicvoid OnMovePage2(bool isOn)

{

if (isOn)

targetHorizontalPosition =ArrayList[1];

}

publicvoid OnMovePage3(bool isOn)

{

if (isOn)

targetHorizontalPosition =ArrayList[2];

}

1.}

關於UI控制元件中的toggleslider

Slider通常用來設計滾動條

這裡設定的分別是背景,填充顏色和拖動的按鈕,再在這裡獲取01的值來程式碼控制滾動條

Toggle通常用來做單選框

我們通過給這些按鈕新增一個toggle元件,全選給一個toggleGroup,再分別設定graphic就可以來控制單選了

當然我們也可以對Toggle進行擴充套件,來增加自己想要的功能

這裡我們想要通過點選實現切換,但是一般的toggle無法實現我們想要的效果,這時候該怎麼做呢?這裡我們可以新增一個MyToggle的指令碼來對該元件進行擴充套件,實現這樣的功能

1.我們知道toggle控制元件傳遞的是bool型別的值

2.我們建立如下指令碼,邏輯如下

1.我們獲取到兩個遊戲物體和toggle元件

2.我們寫一個isOnValueChange的方法,通過setActive傳遞bool值,來實現元件的隱藏和顯示

3.start方法裡進行傳參和呼叫,這裡我們初始化toggle元件,然後每次點選時就會向toggle元件傳遞isON的屬性,這樣便可以實現OnOff的切換了,

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; public class MyToggle : MonoBehaviour {
    //獲取toggle元件和兩個遊戲物體
    public GameObject isSwitchOn;
    public GameObject isSwitchOff;
    private Toggle toggle;
 // Use this for initialization
 void Start () {
        toggle = GetComponent<Toggle>();
        isOnValueChange(toggle.isOn);
 }
 
 // Update is called once per frame
 void Update () {
  
 }
    public void isOnValueChange(bool isOn)
    {
        //這裡控制組件的顯示和隱藏
        isSwitchOn.SetActive(isOn);
        isSwitchOff.SetActive(!isOn);
    }
1. }

相關推薦

UGUI一些瑣碎知識點

   嗯,這裡記載了我最近學習的一些UGUI的知識,以後可能還會有擴充套件的,這算01吧 UGUI學習和分析 嗯,又到了更新部落格的時間,今天我將在這篇文件裡記載UGUI的部分基礎操作,未來的話可能會有更多的擴充,還是這句話,一起學習,一起成長 1.什麼是GUI GUI也

java學習的一些瑣碎知識點

一、使用泛型的注意事項 1、程式執行時,泛型類是被所有這種類的實現方式所共享的。看案例: List<String> listString =new ArryList<>(); List<Integer> listInt =new Arr

Android一些瑣碎知識點(不定時更新)

一、@id與@+id的區別 @id : 引用現有的資源,類似@string  這樣的做法易於統一管理。     具體用法: <resources> <item name="topview" type="id"/> <item

mysql一些瑣碎知識點

1.整型的資料型別括號內的數字不管是多少,所佔的儲存空間都是一樣 。 int(1)、tinyint(4) 能儲存的整數範圍哪個大? int 大。 注意數字型別後面括號中的數字,不表示長度,表示的是顯示寬度,這點與 varchar、char 後面的數字含義是不同的。 也就是說

一些瑣碎的java知識點

 int length()                           返回當前字串的長度 int indexOf(int ch)                     查詢ch字元在該字串中第一次出現的位置 int indexOf(String str)                  查詢st

Python之路58-Django安裝配置及一些基礎知識點

python目錄一、安裝Django二、創建工程三、創建app四、靜態文件五、模板路徑六、設置settings七、定義路由八、定義視圖九、渲染模板十、運行Django是一款Python的web框架一、安裝Djangopip3 install django安裝完成後C:\Python35\Script下面會生成

一些知識點記錄

absolute www 什麽是 目的 定位元素 小知識點 pos 布局 z-index 1.什麽是文檔流? 回答1:文檔流是文檔中可顯示對象在排列時所占用的位置。比如網頁的div標簽它默認占用的寬度位置是一整行,p標簽默認占用寬度也是一整行,因為div標簽和p標簽是塊狀對

Linux系統的一些零散知識點

知識點 同時 nbsp 小寫 區分 類型 inux 安裝linux 詳解 -Linux系統是不以文件後綴名區分文件類型的 #詳解(待完成) -Linux系統區分大小寫 //快速切換大小寫的方法是同時按住Shift和字母按鍵 -如果要安裝Windows和LInux的雙

JS一些知識點

pan 向上取整 index 寬高 字符 img 可能 劃線 比較 一些js基本知識點 Doctype 瀏覽器渲染模式 渲染模式發展歷史 在多年以前(IE6誕生以前),各瀏覽器都處於各自比較封閉的發展中(基本沒有兼容性可談)。隨著WEB的發展,兼容性問

j2se學習中的一些零碎知識點1(內容有些零散)

方法 封裝 對象 變量 繼承 1、java編譯和運行階段發生的事情,如下圖所示:- 編寫的java源文件,通過java編譯器編譯生成以.class結尾的字節碼文件(字節碼並不是二進制),生成的字節碼文件通過類裝載器裝載進java虛擬機中,再通過java虛擬機運行轉化成二進制文件與底層的操

j2se學習中的一些零碎知識點2

語句塊 繼承多態 this和super以及final 接口 抽象類 1、static修飾的變量叫做“靜態變量”(靜態變量,被存儲在方法區中,所有的java對象共享靜態變量,所有靜態變量是類級別的,使用“類名.”的方式訪問。),static修飾的方法叫做“靜態方法”(靜態方法中不能夠直直接訪

j2se學習中的一些零碎知識點4

異常處理機制 數組 使用數組模擬棧 排序算法 二分法查找 string 1、什麽是異常?在程序運行過程中出現的錯誤。異常模擬的是現實世界中“不正常”的事件。- java中采用“類”去模擬異常。類是可以創建對象的。- NullPointException e = 0x1234; e是

j2se學習中的一些零碎知識點7

流的概念 流的繼承結構圖 fileinputstream和fileoutputstream filwriter和filereader 序列化版本號 1、 關於流的概念:流根據方向可以分為:輸入流和輸出流。(註意,輸入和輸入是相對於內存而言的,從內存中出來叫做輸出,到內存中就是輸入。輸入流有

j2se學習中的一些零碎知識點8

多線程概念 java程序的線程運行原理 線程的定義和創建 線程的調度與控制 線程休眠 類鎖 1、多線程的基本概念:- 線程是指進程中的一個執行場景,也就是執行流程。(每個進程就是一個應用程序,都有獨立的內存空間;同一個進程中的線程共享其進程中的內存和資源。)- 多進程的作用:單進程

一些數論知識點

階乘 class mage 剩余定理 中國 con 知識 turn pmod Lucas定理: $C_{b}^{a}\pmod p= C_{b/p}^{a/p}*C_{b \pmod p}^{a \pmod p}\pmod p$ 通常在p較小時用。 對於$C_{b/p

struts2的瑣碎知識點

default del 方法名 ret action 動作 div println apach servlet:void init(ServletConfig cfg):// 讀取servlet的配置參數void service(ServletRequest request

Spring的一些零碎知識點整理

Spring Spring配置屬性文件 Web工程中配置Spring 引入Spring配置文件 Spring在web項目中的初始化類 在Web工程中配置Spring 要想在Web工程中配置Spring,首先需要在工程加入spring-web包,我這裏使用的是maven的web工程,pom.

瑣碎知識點(2)

頁面 查詢 電腦 chrome瀏覽器 webkit ie瀏覽器 工具 做的 -- 1、CSS3中-MS-,-MOZ-,-WEBKIT-,-O-瀏覽器私有前綴詳解 (1)-moz-:代表FireFox瀏覽器私有屬性 (2)-ms-:代表IE瀏覽器私有屬性 (3)-webkit

瑣碎知識點(1)

因此 cli 軟件 是否 inux 喜歡 font sta 如果 1、看懂鏈接 單頁面應用鏈接:https://reactjs.org/docs/react-api.html#createelement (鏈接中有#號) 2、免費的圖片分享網站imgur 網站地址:htt

最近的一些零碎知識點,jquery遍歷

知識 ldr pre find sel bsp isa ted btn 1.使按鈕無法點擊 ¥(“#btn”).attr("disable",true); 2.返回上一個頁面 history.back(-1); 3.$(this).siblings() 查找每個 p 元素的