当我调用非静态方法时,会出现以下错误:
NullReferenceException RealmRecuition。ResolveRealmFestival()(位于Assets/Scripts/Card Manipulation/Realm Cards/Behaviors/realmrecuition.cs:14)系统。反射单一方法。Invoke(System.Object obj、BindingFlags invokeAttr、System.Reflection.Binder Binder、System.Object[]参数、System.Globalization.CultureInfo culture)(在/Users/builduser/buildslave/mono runtime和classlibs/build/mcs/class/corlib/System.Reflection/monmethod.cs:222)以targetingException的形式返回:调用目标引发异常。系统反射单一方法。调用(System.Object obj、BindingFlags invokeAttr、System.Reflection.Binder Binder、System.Object[]参数、System.Globalization.CultureInfo culture)(在/Users/builduser/buildslave/mono运行时和classlibs/build/mcs/class/corlib/System.Reflection/monmethod.cs:232)系统。反射MethodBase。调用(System.Object obj,System.Object[]参数)(at/Users/builduser/buildslave/mono runtime和classlibs/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)RealmCardManager。OnMouseDown()(位于Assets/Scripts/Card Manipulation/Realm Cards/realmcards/RealmCardManager.cs:48)UnityEngine。SendMouseEvents:DoSendMouseEvents(Int32)
下面是调用RealmCardManager中显示的各个方法的代码。OnMouseDown()消息,其上方为斜体。(注:我删去了不相关的代码):
public class RealmCardManager : MonoBehaviour {
void OnMouseDown(){
Type classType = Type.GetType(CardBehavior);
ConstructorInfo rCon = classType.GetConstructor(Type.EmptyTypes);
object cardResult = rCon.Invoke(new object[]{});
MethodInfo theMethod = classType.GetMethod("Resolve" + CardBehavior, BindingFlags.Instance | BindingFlags.Public);
theMethod.Invoke(cardResult, null);
}
}
上面的代码基于字符串行为调用各个方法,在本例中调用的方法如下
public class RealmFestival : MonoBehaviour {
public PoliticalProblems pP;
public void ResolveRealmFestival(){
pP = gameObject.AddComponent<PoliticalProblems>();
pP.AdjustHeresy(false);
}
}
最后调用以下代码:
public class PoliticalProblems: MonoBehaviour {
public void AdjustHeresy(bool increase){
if(increase){
GameData.RealmLevels[2] ++;
} else {
GameData.RealmLevels[2] --;
}
}
}
如果我将AdjustHeresy更改为Static,那么代码就可以完美地工作(当然,我会在RealmFestival中对调用进行其他更改)。然而,我不能将该方法作为静态。
我试过把政治问题放在游戏对象上,让它独立,但它仍然没有改变错误信息
提前谢谢你
应要求(并在BatteryBackupUnit的协助下),我将此作为内部异常:
系统反射TargetInvocationException:调用的目标已引发异常---
根据Unity文件:
请有经验的程序员注意:您可能会惊讶于对象的初始化不是使用构造函数完成的。这是因为对象的构造是由编辑器处理的,而不是在游戏开始时进行的。如果试图为脚本组件定义构造函数,它将干扰Unity的正常运行,并可能导致项目出现重大问题。
在你的例子中,不管怎样,RealmFestival
不需要是一个单行为
:它所做的只是将一个Political问题
组件附加到一个游戏对象上。事实上,它也不需要是一个类——在这种情况下,一个静态函数就足够了(除非你需要跟踪状态——但看起来这可以由Political问题
组件来完成):
public class CardEffects
{
public static void ResolveRealmFestival(GameObject gameObject)
{
var politicalProblems = gameObject.AddComponent<PoliticalProblems>();
politicalProblems.AdjustHeresy(false);
}
}
从代码中不清楚字符串CardBehavior
来自何处(我假设它是卡对象的属性),但是如果使用操作
public class Card
{
//public string CardBehaviour;
public Action<GameObject> CardBehaviour;
public void ApplyCardEffect(GameObject target)
{
// Instead of reflection, we can simply invoke the Action directly - assuming it's not null:
CardBehaviour(target);
}
}
卡初始化代码将相应更改:
//card.CardBehaviour = "RealmFestival";
card.CardBehaviour = CardEffects.ResolveRealmFestival;
我有代码: 这是我的项目结构:https://imgur.com/a/5ipF1 这是我的错误消息: 这很奇怪,因为在我将Gradle添加到项目之前它就起作用了。添加Gradle后,我不得不将“src”备注为“源根”。 此结构是智能为 JavaFX 项目生成的基本结构。 有什么想法吗?
System.ObjectDisposedException:无法访问已释放的对象。对象名称:“System.net.Sockets.NetworkStream”。在system.net.sockets.networkstream.read(Byte[]缓冲区,Int32偏移量,Int32大小) 我的问题是我做错了什么?以及重新连接到服务器的最佳解决方案是什么?我的代码如下所示:
我在让Ajax正常工作方面遇到了问题。在我这里的xhtml文件中,我使用Ajax来呈现一些启用或禁用的输入,它可以正常工作。然而,更进一步,我还使用Ajax来呈现包含的xhtml文件,其中包含一个控件,并用id=“photoEnabled”标记。如果未选中该复选框,则会在其位置显示id=“photoDisabled”标记的虚拟显示,只是为了在页面上呈现整洁,并且该显示被禁用。 出于某种原因,这不起
我的主类似乎找不到我的 fmxl 文件,但我很确定路径是正确的。我不明白发生了什么。 这里是我的主要 我收到的错误是 Main.java:74 的错误是我的加载程序调用我不明白错误是由找不到我的fxml文件引起的?
这是我第一次处理SSLSockets, 谢谢你, 编辑1:我启用了调试,这是调试:
假设我想在收到特定异常时恢复某个值,否则返回失败的未来。我希望是这样的: 如果函数会抛出检查过的异常,我想在链式方法中处理它。我尝试过和,但都无法编译。是否为这种情况提供了任何解决方案?我知道接口是方法的参数,它不会抛出任何异常——在这种情况下,我只想返回已经失败的未来。我想找到使用Java8的解决方案。