返回介绍

博客

帮助文档

使用 MonoBehaviour

发布于 2024-08-03 14:42:57 字数 4110 浏览 0 评论 0 收藏 0

HybridCLR完全支持MonoBehaviour工作流,你既可以通过AddComponent的方式在代码里动态挂载热更新脚本,也可以将热更新脚本挂到资源上,再通过加载资源的方式还原脚本。

基于快速上手文档的项目,我们演示如何使用热更新脚本。

创建 Print.cs 热更新脚本

创建 Assets/HotUpdate/Print.cs脚本,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Print : MonoBehaviour
{
    void Start()
    {
        Debug.Log($"[Print] GameObject:{name}");   
    }
}

代码中调用AddComponent来动态挂载热更新脚本

修改 Hello.Run函数,添加动态挂载Print脚本的代码,最终代码如下:

    public static void Run()
    {
        Debug.Log("Hello, World");

        GameObject go = new GameObject("Test1");
        go.AddComponent<Print>();
    }

热更新后,屏幕上会新增一行日志 [Print] GameObject:Test1

将脚本挂载到热更新资源

由于Unity资源管理系统的限制,热更新脚本所挂载的资源(prefab、scene、ScriptableObject资源)必须打成assetbundle,从ab包中实例化资源,才能正确还原脚本。

:::danger 如果将热更新脚本挂载到Resources等随主包的资源上,会发生scripting missing的错误!但如果先打成assetbundle包,再放到Resources下,运行时加载该随包assetbundle则没有问题。 :::

由于整个过程涉及到打ab包,比较冗长,这儿不详细说明。请直接体验 hybridclr_trial 项目(githubgitee)。

对于新手来说,你只需要记住:挂载热更新脚本的资源(场景或prefab)必须打包成ab,在实例化资源前先加载热更新dll即可(这个要求是显然的!)。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文