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;//這個可以獲得到滑鼠當前拖拽到水平的什麼位置,用0到1的浮點數進行量化
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控制元件中的toggle和slider
Slider通常用來設計滾動條
這裡設定的分別是背景,填充顏色和拖動的按鈕,再在這裡獲取0到1的值來程式碼控制滾動條
Toggle通常用來做單選框
我們通過給這些按鈕新增一個toggle元件,全選給一個toggleGroup,再分別設定graphic就可以來控制單選了
當然我們也可以對Toggle進行擴充套件,來增加自己想要的功能
這裡我們想要通過點選實現切換,但是一般的toggle無法實現我們想要的效果,這時候該怎麼做呢?這裡我們可以新增一個MyToggle的指令碼來對該元件進行擴充套件,實現這樣的功能
1.我們知道toggle控制元件傳遞的是bool型別的值
2.我們建立如下指令碼,邏輯如下
1.我們獲取到兩個遊戲物體和toggle元件
2.我們寫一個isOnValueChange的方法,通過setActive傳遞bool值,來實現元件的隱藏和顯示
3.在start方法裡進行傳參和呼叫,這裡我們初始化toggle元件,然後每次點選時就會向toggle元件傳遞isON的屬性,這樣便可以實現On和Off的切換了,
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 元素的