首页 > 其他分享 >unity 热重载方式加载 dll

unity 热重载方式加载 dll

时间:2023-01-04 14:13:53浏览次数:45  
标签:string logicFiles BuildOutputDir dll unity 重载 Path type

1.代码示例

    void LoadDll() {
        //Unity版本对于Load Dll的影响
        //2019 就算在运行时修改了dll,也是无效的,拿的还是上一次的dll
        //2020 unity认为相同路径为上一次的dll
        //2021 没问题
        
        //读取相对路径文件夹下的某种名称的 dll
        string BuildOutputDir = "./Temp/Bin/Debug";
        string[] logicFiles = Directory.GetFiles(BuildOutputDir, "My*.dll");

        if (logicFiles.Length != 1)
        {
            throw new Exception("Logic dll count != 1");
        }

        string logicName = Path.GetFileNameWithoutExtension(logicFiles[0]);
        byte[] assBytes = File.ReadAllBytes(Path.Combine(BuildOutputDir, $"{logicName}.dll"));
        byte[] pdbBytes = File.ReadAllBytes(Path.Combine(BuildOutputDir, $"{logicName}.pdb"));
        //通过 dll 和 pdb 加载程序集
        Assembly hotfixAssembly = Assembly.Load(assBytes, pdbBytes);

        //实例化调用 dll 方法,也可以用静态的
        Type type = hotfixAssembly.GetType("TestCode.Class1");
        object obj = Activator.CreateInstance(type);
        MethodInfo methodInfo = type.GetMethod("Test");
        methodInfo.Invoke(obj, null);
    }

 

2.添加独立工程

在用代码编辑器打开的工程里面,添加一个类库工程,类库工程负责生成 dll ,主工程去读取这个dll文件

 

标签:string,logicFiles,BuildOutputDir,dll,unity,重载,Path,type
From: https://www.cnblogs.com/sanyejun/p/17024655.html

相关文章

  • unity3d脚本之鸡零狗碎
    这里记录的是unity3d开发中用到的鸡零狗碎的代码片段。1、键盘方向键移动对象publicclassKeyboardMove:MonoBehaviour{privatefloatspeed=5f;voidFixedUpdate......
  • unity3d,android平台下,高德地图定位,定位模式设定
    接上一篇,有时候不是想偷懒,实在是不会用androidstudio再次打包啊。高德地图定位androidsdk中,设置定位模式,java代码如下://设置定位模式为高精度模式,Battery_Saving为低功耗......
  • unity3d调用jar类中的方法和属性
    这里用的unity3d的版本是5.3.2在eclipse里新建一个java工程,并导出成jar。packagecom.innyo.androidplugin;publicclassapTest{publicapTest(StringinString){t......
  • mapbox-unity-sdk学习小结
    Mapbox不是一个专门的增强现实SDK,是一个移动和网络应用程序的位置数据平台,提供构建基块,将地图,搜索和导航等位置功能。国内基于地理定位的增强现实开发的时候,其实很麻烦。Goo......
  • unity3d,android平台下,高德地图搜索附近
    今天把高德地图androidsdk搜索附近的功能搞定了。和定位一样,引入jar,AndroidManifest.xml和定位的一样,没有需要修改的地方。改的多的是Java插件。原java示例代码中,query=n......
  • unity3d,android平台下,高德地图定位
    这里,用了一个比较偷懒的办法,直接用高德提供的android定位sdk,没有重新编译。好处是省事,坏处是,没法修改默认的定位模式。部分信息获取不到。如果需要完整的功能,还是需要重新编......
  • unity3d 尝试 基于地理定位的 增强现实
    首先说,这个尝试失败,属于死在去医院的路上那种。基于地理定位的增强现实,AR全息实景,是一种高大上的说法,说直白点就是山寨类似随便走这样的应用。打开应用,搜索周边信息,然后再把......
  • Unity2019学习:常用功能--Canvas画布
    Canvas(画布)游戏对象是其他UnityUI的基础,其他的UnityUI必须是Canvas(画布)游戏对象的下级游戏对象。当UI内容发生变化的时候,是以画布为单位进行重绘,合理的将内容分配到不同的......
  • unity3d,异步加载场景
    很简单,代码如下:usingUnityEngine;usingSystem.Collections;usingUnityEngine.UI;publicclassLoading:MonoBehaviour{publicSliderloading_bar;privateAsyncO......
  • unity+高德定位=pokemon go 山寨demo安卓版
    这两周尝试了下用高德地理定位和Unity来做个山寨的pokemongo的demo,只能在安卓下使用。游戏过程视频:​​http://www.bilibili.com/video/av6836823/​​场景一这里是获取......