公司開(kāi)發(fā)需求,在Unity啟動(dòng)時(shí)彈一次提示框以顯示一些開(kāi)發(fā)規(guī)范。
查詢得知unity擁有屬性 [InitializeOnLoad],用該屬性標(biāo)記過(guò)的靜態(tài)類會(huì)在unity啟動(dòng)和重新編譯時(shí)調(diào)用一次構(gòu)造函數(shù),在此構(gòu)造函數(shù)中調(diào)用彈框方法即可實(shí)現(xiàn)需求。
但是為了去掉重新編譯時(shí)反復(fù)彈框的功能,第一次彈框后記錄“StartUp”值,之后檢測(cè)該值不再?gòu)椏颍P(guān)閉unity時(shí)清除該值,保證下次啟動(dòng)彈框功能正常。
貼上代碼:
using UnityEngine;
using UnityEditor;
[InitializeOnLoad]
public class OnUnityStartTest : Editor
{
static OnUnityStartTest()
{
EditorApplication.quitting -= Quit;
EditorApplication.quitting += Quit;
EditorApplication.update -= Update;
EditorApplication.update += Update;
}
static void Update()
{
int startKey = PlayerPrefs.GetInt("StartUp", 0);
if (startKey <= 0)
{
startKey++;
WelcomeScreen.ShowWindow();
PlayerPrefs.SetInt("StartUp", startKey);
EditorApplication.update -= Update;
}
}
static void Quit()
{
PlayerPrefs.SetInt("StartUp", 0);
}
}
public class WelcomeScreen : EditorWindow
{
private Rect textRect = new Rect(15f, 15f, 200f, 100f);
public void OnGUI()
{
GUIStyle style = new GUIStyle();
style.fontSize = 20;
style.normal.textColor = Color.white;
GUI.Label(this.textRect, "Hello!!!!zahll1993", style);
}
public static void ShowWindow()
{
WelcomeScreen window = EditorWindow.GetWindow(true, "Start!");
window.minSize = window.maxSize = new Vector2(300f, 300f);
DontDestroyOnLoad(window);
}
}
更多關(guān)于“unity培訓(xùn)”的問(wèn)題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬(wàn)人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時(shí)歡迎你來(lái)試聽(tīng)。