Unity 利用 InitializeOnLoad 属性实现UnityEditor启动自动执行

这篇具有很好参考价值的文章主要介绍了Unity 利用 InitializeOnLoad 属性实现UnityEditor启动自动执行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

InitializeOnLoad 属性

允许在 Unity 加载时重新编译脚本时初始化 Editor 类。
重新编译项目中的脚本时,会调用带有此属性的静态构造函数。在 Unity 首次加载项目时、在 Unity 检测到脚本修改时,以及当进入运行模式时,会进行此调用。

StartUp类

using UnityEngine;

[InitializeOnLoad]
public class StartUp
{
    /// <summary>
    /// InitializeOnLoad 属性修饰的编辑器类会在Unity启动或重新编译后自动运行静态构造函数
    /// </summary>
    static StartUp() {
        Debug.Log(" 自动运行 ");
    }
}

[InitializeOnLoad]属性修饰且构造函数是静态的类。在UnityEditor启动后或者重新编译完成是自动执行。

只在UnityEditor启动时执行一次操作

using System;
using UnityEditor;
using UnityEngine;

[InitializeOnLoad]
public class StartUp
{
    /// <summary>
    /// InitializeOnLoad 属性修饰的编辑器类会在Unity启动或重新编译后自动运行静态构造函数
    /// </summary>
    static StartUp() {
        // 注意 因为这个构造函数会被重复调用,
        //所以为了防止quitting和update两个回调被重复添加,需要先移除后添加
        EditorApplication.quitting -= OnEditorQuit;
        EditorApplication.quitting += OnEditorQuit;

        Debug.Log(" 自动运行 ");

        if (!PlayerPrefs.HasKey("StartUp"))
        {
            // 通过标记记录是否已经执行过该方法
            OnEditorStartUp();
            PlayerPrefs.SetInt("StartUp", 1);
        }
    }

    /// <summary>
    /// UnityEditor 关闭时取消标记
    /// </summary>
    private static void OnEditorQuit()
    {
        PlayerPrefs.DeleteKey("StartUp");
    }

    /// <summary>
    /// 只会在UnityEditor启动时执行一次
    /// </summary>
    static void OnEditorStartUp() {
        Debug.Log(" UnityEditor 启动 ");
    }
}

如果只需在UnityEditor启动时执行一次的操作,可以在OnEditorStartUp方法中调用,例如在UnityEditor启动后自动更新SVN或Git等。文章来源地址https://www.toymoban.com/news/detail-511056.html

到了这里,关于Unity 利用 InitializeOnLoad 属性实现UnityEditor启动自动执行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# wpf利用Clip属性实现截屏框

    第一章 使用GDI+实现截屏 第二章 制作截屏框(本章) ______第一节 使用DockPanel制作截屏框 ______第二节 利用Clip属性实现截屏框(本节) 第三章 实现截屏框热键截屏 第四章 实现截屏框实时截屏 第五章 使用ffmpeg命令行实现录屏 第一节已经实现过截屏框,实现方法相对简单,也仅

    2024年01月23日
    浏览(29)
  • 【Unity Shader】Unity中利用GrabPass实现玻璃效果

    《入门精要》中模拟玻璃是用了Unity里的一个特殊的Pass来实现的,这个Pass就是 GrabPass ,比起上一篇博客实现镜子的方法,这个方法我认为相对复杂,因此在实现之前需要对GrabPass及实现原理做一个更加详细的介绍。 场景物体拜访和贴图完全参考《入门精要》: 以及当前场景

    2024年02月09日
    浏览(33)
  • 车机 Android 环境下利用 CarAudioService 实现自定义 Java 服务自启动

    注意:本文基于 Android 11/R 进行分析 Qidi 2023.11.28 (MarkDown Haroopad) Overlay 实现的效果正如其字面意思,就是“在原有效果的基础上再叠加一些效果”。 Android 提供了两种实现方式: 编译时:https://source.android.com/docs/setup/create/new-device#use-resource-overlays 运行时:https://source.android.c

    2024年02月05日
    浏览(29)
  • unity利用ITextSharp实现导出pdf文件

    unity创建pdf文件首先需要搭建ITextSharp环境,先要导入所需要的dll文件。选用vs创建一个控制台项目,然后点击工具-包管理器-管理解决方案的Nuget程序包选项,如图所示:  打开包管理器后,搜索ITextSharp并安装此包。  安装完毕后,点击生成-生成(项目名),即可生成dll文件

    2024年02月15日
    浏览(31)
  • unity 利用Scroll View实现滑动翻页效果

    1.在Hierarchy视图右键创建UI-Scroll View。 Scrollbar可根据自己需求选择是否删除,我这里制作的翻页日历用不上我就删除了。 connect节点挂上Grid Layout Group组件,参数属性可参考unity API。 下面是具体实现代码  onLeft和onRight绑定左右翻页按钮事件  

    2024年01月25日
    浏览(27)
  • Unity 3D之 利用Vector3 计算移动方向,以及实现位移多少

    这段代码是一个在游戏开发中常见的示例,用于获取玩家的输入,并将输入值转换为一个三维向量,以表示移动方向。让我们逐步解释这段代码: float horizontalInput = Input.GetAxis(\\\"Horizontal\\\"); :这一行代码获取水平方向上的输入。它调用 Input.GetAxis(\\\"Horizontal\\\") 来获取水平轴的输入

    2024年02月11日
    浏览(29)
  • 01_1_Qt工程实践_Qt样式表Qss(什么是QSS;基本语法;setStyleSheet函数;样式表的属性值;利用QtCreate实现样式切换;样式表实现皮肤改变实例)

    本篇介绍什么是样式表,讨论如何使用Qt样式表Qss修改应用程序外观,并通过实例进行讲解。 了解HTML的同学都知道,一般在HTML中我们把样式表叫做CSS,在Qt中我们称之为QSS。QSS和CSS并不完全等同,语法完全类似,定义上存在一些差别。 QSS是Qt程序界面中用来设置控件的背景图

    2024年02月16日
    浏览(33)
  • 【Unity 3D】利用C#、Unity和Socket实现简单的在线聊天室工具(附源码 简单易懂)

    需要源码请点赞关注收藏后评论区留言并且私信~~~ 下面利用Unity和C#语言做一个简单的聊天室程序,主要用到的技术就是Socket通信连接,需要一个客户端和一个服务器端,服务器端就使用C#语言的控制台完成 下面就开始搭建C#语言服务器端 1:新建一个C#语言控制台程序 2:命名

    2024年02月05日
    浏览(44)
  • 【学习笔记】Unity基础(七)【uGUI基础、利用render Texture实现小地图功能】

    转载请注明出处:🔗https://blog.csdn.net/weixin_44013533/article/details/130808689 本篇基本是大纲性质,参考价值不大,只有最后一小节“利用render Texture实现小地图功能”花了点时间,可以看看,不过也用到了上面的canvas、UI image等知识、以及input等脚本功能,也算一个小练手吧 倒是

    2024年02月08日
    浏览(37)
  • Unity3D学习记录04——利用射线实现角色类似LOL的移动

    首先新建一个空白的GameObject,挂在一个MouseManager的脚本 实现思路: 通过获取鼠标点击的位置,获得该位置的信息,然后使角色移动到该位置 MouseManager脚本的代码如下:   代码解释: 先创建了一个Action类型的事件OnMouseClicked 这个是C#中事件的内容,我们可以在满足条件的时

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包