C# 获取调用方法';游戏对象信息
我有一个自定义脚本作为组件附加到游戏对象上 假设是游戏对象G1和组件C1 在组件C1中,它有一个调用另一个游戏对象(G2)并将其活动设置为false的方法 游戏对象G2有另一个组件脚本C2,在这个脚本中,在OnEnable()方法中,我试图获取调用脚本的游戏对象,以便引用它 我尝试过使用反射,比如C# 获取调用方法';游戏对象信息,c#,unity3d,C#,Unity3d,我有一个自定义脚本作为组件附加到游戏对象上 假设是游戏对象G1和组件C1 在组件C1中,它有一个调用另一个游戏对象(G2)并将其活动设置为false的方法 游戏对象G2有另一个组件脚本C2,在这个脚本中,在OnEnable()方法中,我试图获取调用脚本的游戏对象,以便引用它 我尝试过使用反射,比如 System.Diagnostics.StackTrace()).GetFrame(1).GetMethod(). 我可以获得调用方法名reflectType,但无法引用实际的游戏对象(G1) 我有
System.Diagnostics.StackTrace()).GetFrame(1).GetMethod().
我可以获得调用方法名reflectType,但无法引用实际的游戏对象(G1)
我有没有其他方法可以达到这个要求?tks
仅供参考,我不能简单地使用参数的原因是(G1和C1)是我从Assetstore下载的第三方脚本,我只是不想修改它的源代码,不幸的是调用方法不是重写方法
回答下面的一些评论:
组件(C1)是assetstore中的第三方脚本,我可以肯定地对其进行编辑,但我不想这样做,因为作者可以在下次更新时更新此C1,而且很难遵循
C1有一个公共字段来分配“Gameobject”,它有一个私有方法来调用该Gameobject的“SetActive”函数
例如,我将G2拖到该字段,因此C1私有方法可以在必要时将其设置为active(true)
问题在于,在这个资产插件中,有太多游戏对象附加了这个C1脚本,而我的设计是将我的G2游戏对象拖到每个脚本的公共字段中
然后,只有当我能从G2>C2中获得一个参考来确定哪个游戏对象的C1正在调用
希望我能解释清楚,并提前感谢:)在
C2
中添加一个可公开编辑的字段/属性,然后编辑C1
在组件上设置它,如果它存在:if(target.TryGetComponent(out C2 otherComponent)){C2.activationgameobject=gameObject;}
C1如何调用C2?这是一个单位事件吗?为什么不在C2中添加一个引用C1的字段?有点不清楚是什么和为什么。听起来你最好使用你调用的静态控制器或扩展,而不是直接调用对象。将呼叫者和接收者都传递给所述控制器或分机,然后使用该控制器或分机通过在停用g2之前将游戏对象传递给c2来执行所需的操作