Unity【InitializeOnLoadMethod】- 如何在项目工程打开时创建一个窗口
        【摘要】 
                    我们在Unity中安装的一些插件、工具,会在工程打开时弹出一个相关介绍的窗口,实现这样的功能需要用到InitializeOnLoadMethod这个特性,官方文档中的介绍: 
 
使用了该特性的静态函数会在Unity工程加载时,不需要用户做任何操作,函数将会自动执行,下面是使用该特性实现的一个简单的窗口: 
 
代码如下: 
using...
    
    
    
    我们在Unity中安装的一些插件、工具,会在工程打开时弹出一个相关介绍的窗口,实现这样的功能需要用到InitializeOnLoadMethod这个特性,官方文档中的介绍:

使用了该特性的静态函数会在Unity工程加载时,不需要用户做任何操作,函数将会自动执行,下面是使用该特性实现的一个简单的窗口:

代码如下:
  
   - 
    
     
    
    
     
      using UnityEngine;
     
    
- 
    
     
    
    
     
      using UnityEditor;
     
    
- 
    
     
    
    
     
      
     
    
- 
    
     
    
    
     
      public class Example : EditorWindow
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     
          [InitializeOnLoadMethod]
     
    
- 
    
     
    
    
         private static void OnEditorLaunch()
     
    
- 
    
     
    
    
     
          {
     
    
- 
    
     
    
    
             //代码重新编译时该方法也会重新执行
     
    
- 
    
     
    
    
             //使用时间判断避免重复执行
     
    
- 
    
     
    
    
             if (EditorApplication.timeSinceStartup < 30)
     
    
- 
    
     
    
    
     
              {
     
    
- 
    
     
    
    
                 //向此委托添加函数,以便将其执行延迟到检视面板更新完成之后
     
    
- 
    
     
    
    
                 //每个函数在添加后仅执行一次
     
    
- 
    
     
    
    
     
                  EditorApplication.delayCall += () =>
     
    
- 
    
     
    
    
     
                  {
     
    
- 
    
     
    
    
                     //获取窗口
     
    
- 
    
     
    
    
                     var window = GetWindow<Example>(true, "About", true);
     
    
- 
    
     
    
    
                     //设置窗口位置及大小
     
    
- 
    
     
    
    
     
                      window.position = new Rect(200, 200, 600, 300);
     
    
- 
    
     
    
    
                     //限制最小尺寸
     
    
- 
    
     
    
    
     
                      window.minSize = new Vector2(600, 300);
     
    
- 
    
     
    
    
                     //限制最大尺寸
     
    
- 
    
     
    
    
     
                      window.maxSize = new Vector2(600, 300);
     
    
- 
    
     
    
    
                     //打开窗口
     
    
- 
    
     
    
    
     
                      window.Show();
     
    
- 
    
     
    
    
     
                  };
     
    
- 
    
     
    
    
     
              }
     
    
- 
    
     
    
    
     
          }
     
    
- 
    
     
    
    
         private void OnGUI()
     
    
- 
    
     
    
    
     
          {
     
    
- 
    
     
    
    
             //在窗口中绘制具体内容
     
    
- 
    
     
    
    
     
              GUILayout.Label("SKFramework", new GUIStyle(GUI.skin.label) { fontSize = 50, fontStyle = FontStyle.Bold });
     
    
- 
    
     
    
    
     
              GUILayout.Label("//TODO");
     
    
- 
    
     
    
    
     
          }
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      
     
    
 
 文章来源: coderz.blog.csdn.net,作者:CoderZ1010,版权归原作者所有,如需转载,请联系作者。
原文链接:coderz.blog.csdn.net/article/details/123306954
        【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
            cloudbbs@huaweicloud.com
        
        
        
        
        
        
        - 点赞
- 收藏
- 关注作者
 
            
 
           
评论(0)