Mono Unity3D嵌入式单声道与Unity 我见过很多例子,用C++调用我的UNITY C代码中的静态方法。然而,我还没有看到如何使用C++调用单个实例的方法的任何示例。i、 而不是 public static void SomeMethod( { }

Mono Unity3D嵌入式单声道与Unity 我见过很多例子,用C++调用我的UNITY C代码中的静态方法。然而,我还没有看到如何使用C++调用单个实例的方法的任何示例。i、 而不是 public static void SomeMethod( { },mono,unity3d,Mono,Unity3d,我真的很想做: public void SomeMethod() { } 我已经通过遵循中的一些教程成功地实现了静态实现,但是我很想知道bottom方法是否可行。我试图添加一个用于在类中搜索方法的定义 MonoMethod* mono_method_desc_search_in_class (MonoMethodDesc *desc, MonoClass *klass); 但是在mono运行库中找不到实现,我被告知从这里使用它: 任何关于是否可能或如何做到这一点的指导或知识都将不胜

我真的很想做:

public void SomeMethod()
{
} 
我已经通过遵循中的一些教程成功地实现了静态实现,但是我很想知道bottom方法是否可行。我试图添加一个用于在类中搜索方法的定义

MonoMethod*     mono_method_desc_search_in_class (MonoMethodDesc *desc, MonoClass *klass);
但是在mono运行库中找不到实现,我被告知从这里使用它:

任何关于是否可能或如何做到这一点的指导或知识都将不胜感激

编辑:


还有一个问题。如果我搜索一个游戏对象,我可以用它来访问这个实例吗?

你没有说你是为哪个平台开发的,但是对于iOS,有UnitySendMessage功能。我相信其他平台也有类似的实现

从本机代码调用C#/JavaScript

Unity iOS通过UnitySendMessage支持有限的本机到托管回调功能:

UnitySendMessage(“GameObjectName1”、“MethodName1”、“要发送的消息”)

参数必须是字符串,因此我使用JSON发送更复杂的数据

或者,从UnityEngine.Object继承的所有内容都有一个GetInstanceID()方法,该方法保证是唯一的。使用此方法,您可以在C#中使用一个静态方法,该方法保存收件人实例的字典,并且本机代码将始终传递一个整数ID以引用预期的收件人

static Dictionary<int, SomeClass> instanceDict = new Dictionary<...>();

void Awake() {
  instanceDict.Add(GetInstanceID(), this);
}

void OnDestroy() {
  instanceDict.Remove(GetInstanceID());
}

public static void SomeMethod(int recipientID, float someValue) {
  instanceDict[recipientID].SomeMethod(someValue);
}
static Dictionary instanceDict=new Dictionary();
无效唤醒(){
Add(GetInstanceID(),this);
}
void OnDestroy(){
Remove(GetInstanceID());
}
公共静态void SomeMethod(int recipientID,float someValue){
instanceDict[recipientID].SomeMethod(someValue);
}