公司開發需求,在Unity啟動時彈一次提示框以顯示一些開發規范。
查詢得知unity擁有屬性 [InitializeOnLoad],用該屬性標記過的靜態類會在unity啟動和重新編譯時調用一次構造函數,在此構造函數中調用彈框方法即可實現需求。
但是為了去掉重新編譯時反復彈框的功能,第一次彈框后記錄“StartUp”值,之后檢測該值不再彈框,關閉unity時清除該值,保證下次啟動彈框功能正常。
貼上代碼:
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);
}
}
更多關于“unity培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。