首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

启动时运行编辑器脚本代码-InitializeOnLoad

设想这样的一个场景:

你写了一个Unity3d插件,放到Unity Asset Store上面出售,某一天你更新了一个版本,如何让用户知道你更新了呢?

结合目前所有软件的更新检测方案,在Unity中可用的就是监听Unity3d的启动事件检测更新。

我们项目中用到了AstarPath寻路,每次打开工程,都会在Console中打印出检测更新的日志,点进去看到他的源代码如下:

[InitializeOnLoad]

/** Checking for updates on startup */

public static class UpdateChecker {

static UpdateChecker()

{

AstarPathEditor.CheckForUpdates ();

}

}

如果无需用户操作即可在 Unity 启动时运行工程中的某些编辑器脚本代码,这在某些情况下将是非常有用的功能。将InitializeOnLoad属性应用到具有静态构造函数的类,即可达到此目的。静态构造函数是指与类名称相同且声明为静态的函数,它不具有返回类型或参数(请参阅此处,了解详细信息):-

using UnityEngine;

using UnityEditor;

[InitializeOnLoad]

public class Startup {

static Startup()

{

Debug.Log("Up and running");

}

}

静态构造函数始终保证在使用类的任何静态函数或实例之前调用,但是 InitializeOnLoad 属性可确保在编辑器启动之时调用此函数。

说明此技术使用的一个示例,是在编辑器中设置定期回调(可以称之为“帧更新”)。EditorApplication 类有一个名为 update 的委托,在编辑器运行时,它将每秒调用多次。如需在工程运行时启动此委托,可以使用以下代码:

using UnityEditor;

using UnityEngine;

[InitializeOnLoad]

class MyClass

{

static MyClass ()

{

EditorApplication.update += Update;

}

static void Update ()

{

Debug.Log("Updating");

}

}

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190820A008FH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券