打包好的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);
}
}
}