UGUI研究之Sprite
UGUI研究之Sprite
學習untiy已經有一段不短的時間,一直沒有有效的記錄下來,實在遺憾,今天開始記錄。 2017 - 01 - 13
最近在寫蠻牛的一個每月訓練營,超級瑪麗,包括UI的切換,獲取金幣的記錄等效果,其中用到記錄場景中金幣獲取數量的地方,用sprite來實現。
-
-* *
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class CoinNumContorller : MonoBehaviour {
public Sprite[] NumberImage;
public void SetCoinValue(int value)
{
value = Mathf.Clamp(value, 0, NumberImage.Length); //value的範圍在0-9
this.GetComponent<Image>().sprite = NumberImage[value]; //獲取到圖片數字元件
}
}
直接上程式碼,這段程式碼是配置圖集的,將此程式碼的.cs檔案拖拽到image上
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.Sprites;
using UnityEditor;
using UnityEditor.Sprites;
using System;
public class Gaming : MonoBehaviour {
// Use this for initialization
public CoinNumContorller CoinFirst;
public CoinNumContorller CoinSecond;
public CoinNumContorller CoinThird;
public static int CoinValue;
public void UpdateCoinValue(int value)
{
value = Mathf.Clamp(value , 0 , 999);
CoinValue = value;
var stringValue = value.ToString(); //把value轉換成字串型別
if (stringValue.Length <= 1)
{
CoinFirst.GetComponent<Image>().enabled = true;
CoinFirst.SetCoinValue((int)Char.GetNumericValue(stringValue[0])); //獲取字串的第一位
CoinSecond.GetComponent<Image>().enabled = false;
CoinThird.GetComponent<Image>().enabled = false;
}
else if (stringValue.Length == 2)
{
CoinFirst.GetComponent<Image>().enabled = true;
CoinSecond.GetComponent<Image>().enabled = true;
CoinThird.GetComponent<Image>().enabled = false;
CoinFirst.SetCoinValue((int)Char.GetNumericValue(stringValue[0]));
CoinSecond.SetCoinValue((int)Char.GetNumericValue(stringValue[1]));
}
else
{
CoinFirst.GetComponent<Image>().enabled = true;
CoinSecond.GetComponent<Image>().enabled = true;
CoinThird.GetComponent<Image>().enabled = true;
CoinFirst.SetCoinValue((int)Char.GetNumericValue(stringValue[0]));
CoinSecond.SetCoinValue((int)Char.GetNumericValue(stringValue[1]));
CoinThird.SetCoinValue((int)Char.GetNumericValue(stringValue[2]));
}
}
void Start () {
}
// Update is called once per frame
void Update () {
UpdateCoinValue(CoinController.CoinNum); //更新獲取到的金幣數量
}
}
總結一下,其實方法很簡單,就是建立一個Sprite的陣列,用來存每一個圖集的數字,然後根據需求顯示出來
發現一個方法很簡單的處理顯示數字第幾位的方法,如上圖所示
CoinFirst.SetCoinValue((int)Char.GetNumericValue(stringValue[0]));
//獲取字串的第幾位,先把Int轉換成String,然後獲取
參考部落格:
轉自蠻牛一個博主的實現方法:
相關文章
- svg sprite 封裝SVG封裝
- Unity 之 UGUI Scroll Rect滾動矩形元件詳解UnityUGUI元件
- SVG Sprite 使用簡介SVG
- 【UGUI原始碼分析】Unity遮罩之Mask詳細解讀UGUI原始碼Unity遮罩
- STM32 + RTThread + UGUIthreadUGUI
- 將Particle轉成UGUIUGUI
- Three.js Sprite原始碼解析JS原始碼
- Unity遮罩之Mask、RectMask2D與Sprite Mask適用場景分析Unity遮罩
- 【UGUI原始碼分析】Unity遮罩之RectMask2D詳細解讀UGUI原始碼Unity遮罩
- Unity 任意區域截圖建立SpriteUnity
- [Unity] UGUI優化 - 知識點UnityUGUI優化
- UGUI_關卡選項介面UGUI
- UGUI原始碼解析(Toggle和ToggleGroup)UGUI原始碼
- VUE-cli3使用 svg-sprite-loaderVueSVG
- 使用Shader進行UGUI的優化UGUI優化
- 【Unity】UGUI模擬NGUI的UISprite-->LImageUnityUGUINGUI
- ThinkJS 和 Sprite.js 服務端渲染實踐JS服務端
- 使用Unity著色器實現精靈(Sprite)塗鴉效果Unity
- NGUI和UGUI改變字型顏色的寫法NGUIUGUI
- [ToneTuneToolkit][023]UGUI的去色,使UI元素變為灰色UGUI
- 在Unity中用UGUI製作可輸入下拉框UnityUGUI
- 研究linux函式 之 fork()Linux函式
- 如何基於專案人力和管線方案選擇FGUI和UGUIUGUI
- 2、深入研究flutter元件之(Accumulator)Flutter元件
- 1、深入研究flutter元件之(AbsorbPointer)Flutter元件ORB
- 王國維:人間嗜好之研究
- 烏合之眾-大眾心理研究(十二)
- 【Unity】【UGUI】對映3D座標到UI上(血條、人物狀態)UnityUGUI3D
- 我用 PixiJS 中的 Sprite3d 做了一個失敗的 3D 卡片JS3D
- # 2019年是時候使用svg-sprite作為網站icon圖示的主流了!!!SVG網站
- ugui 縮放圖片使圖片的四個角和四邊保持原樣UGUI
- Java安全之反序列化回顯研究Java
- Godot Engine遊戲引擎 ① 製作玩家跳躍精靈和場景——KinematicBody2D、SpriteGo遊戲引擎
- Nginx原始碼研究之nginx限流模組詳解Nginx原始碼
- cocos2d-x自定義可點選/可處理事件/可接受觸屏訊息的Sprite事件
- UIImageView UIView圓角與效能之間的研究與優化UIView優化
- SAP SD微觀研究之銷售發票自動生成初探
- 景遠研究|“金科新區”新政解讀之“金科十條”
- 巨量引擎城市研究院:2021數說城市之成都(附下載)