打包好的Unity如何调用外部的.dll文件
初识反射用法
案例:
Unity:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using UnityEngine;
using UnityEngine.UI;
public class ExternalCite : MonoBehaviour
{
GameObject Cube;//测试改变Cube状态
Text text;//测试改变Text内容
Type type = null;
object objType;
// Start is called before the first frame update
void Start()
{
Cube = GameObject.Find ("Cube");
text = GameObject.Find ("Text").GetComponent<Text>();
//载入dll文件,测试地址
Assembly assembly = Assembly.LoadFrom ("F:/Program Files/项目文件/TestDynamicLoading/UnityTestCite/UnityTestCite/bin/Debug/UnityTestCite.dll");
try
{//得到里面的类
type = assembly.GetType ("UnityTestCite.TestClass");
}
catch (Exception e)
{
Debug.Log (e);
throw;
}
objType = Activator.CreateInstance (type);//创建实例化
MethodInfo mi = type.GetMethod ("test");//得到方法
mi.Invoke (objType, new object[] { Cube , text });//调用方法,传入参数
}
// Update is called once per frame
void Update()
{//调用方法2无参
MethodInfo mi = type.GetMethod ("test2");
mi.Invoke (objType, null);
}
}
dll文件内容:
using System;
using System.Collections.Generic;
using UnityEngine;//引入UnityEngine.dll
using UnityEngine.UI;//引入UnityEngine.UI.dll
namespace UnityTestCite
{
public class TestClass
{
GameObject cCube = null;
public void test(GameObject cube,Text text )
{
cCube = cube;
text.text = cCube.name+"0";
}
public void test2()
{
cCube.transform.Rotate (0, 50f, 0);
}
}
}

本文介绍了一种在Unity中通过反射机制加载并调用外部DLL文件的方法。具体实现包括:1) 使用`Assembly.LoadFrom`加载指定路径的DLL;2) 通过`GetType`获取DLL中的类;3) 利用`Activator.CreateInstance`实例化类;4) 通过`GetMethod`获取方法并使用`Invoke`调用。此外,还提供了具体的Unity脚本和DLL文件的代码示例。

8951

被折叠的 条评论
为什么被折叠?



