将DLL中的类动态添加至运行中的Unity物体上。
1.在VS中新建一个DLL类库工程
2.选择Unity对应的NET框架
3.添加Unity自带DLL库文件
4.新建需要动态添加的脚本
5.生成解决方案/F6. 生成的DLL地址为:"D:XXX\bin\Debug\netstandard2.1\RunTimeAddDllTest.dll"
6.新建Unity工程。添加测试脚本
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using Unity.VisualScripting;
using UnityEngine;
public class Test : MonoBehaviour
{
void Start()
{
//Plan A
//FileStream fs = new FileStream(@"D:\VSProjects\RunTimeAddDllTest\bin\Debug\netstandard2.1\RunTimeAddDllTest.dll", FileMode.OpenOrCreate);
//byte[] bf = new byte[fs.Length];
//fs.Read(bf, 0, bf.Length);
//fs.Dispose();
//fs.Close();
//Assembly assemblyLoadByte = System.Reflection.Assembly.Load(bf);
//Type typeByte = assemblyLoadByte.GetType("RotateTest");
//gameObject.AddComponent(typeByte);
//Plan B
Assembly assembly = Assembly.LoadFrom(@"D:\VSProjects\RunTimeAddDllTest\bin\Debug\netstandard2.1\RunTimeAddDllTest.dll");
Type typeaaa = assembly.GetType("RotateTest");
gameObject.AddComponent(typeaaa);
//获取 GetStr方法 并运行
object obj = Activator.CreateInstance(typeaaa);
string computInt = typeaaa.GetMethod("GetStr").Invoke(obj, new object[] { "CHCHCC" }).ToString();
}
}