近期遇到一个需求,在插件包首次导入后显示一个欢迎界面,虽然SessionStateEditorPrefs都能用于在Unity编辑器中保存数据,但它们适用于不同的需求。

SessionState

SessionState主要用于在编辑器会话期间保持状态信息。适合用来保存那些只在当前编辑器会话期间有效的数据,关闭当前会话后,所有保存的数据都会丢失。

EditorPrefs

EditorPrefs提供了更持久的数据存储。这些数据即使在Unity关闭后仍然存在。

因此,如果需要在每次编辑器启动时显示一个窗口可以使用SessionState:

[InitializeOnLoadMethod]
private static void OnInitialize()
{
    EditorApplication.delayCall += () =>
    {
        if (!SessionState.GetBool("PluliterWelcomeShown", false))
        {
            ShowWindow();
            SessionState.SetBool("PluliterWelcomeShown", true);
        }
    };
}

如果跟我的需求一样,在首次导入插件包后显示一次:

 [InitializeOnLoadMethod]
private static void OnInitialize()
{
    EditorApplication.delayCall += () =>
    {
        if (!EditorPrefs.GetBool("PluliterWelcomeShown", false))
        {
            ShowWindow();
            EditorPrefs.SetBool("PluliterWelcomeShown", true);
        }
    };
}

参考:

Logo

盛京开源社区 SJOSC 官方论坛平台

更多推荐