【发布时间】:2016-07-10 22:57:28
【问题描述】:
我遇到了一个非常奇怪的问题,我有以下收藏:
public static readonly IEnumerable<Button> AuraButtons =
FindObjectsOfType<Button>().Where(button => button.tag == "Aura_Button");
我正在寻找具有特定名称的按钮并将其传递给方法:
UpdateAuraIcon(Settings.AuraButtons.Single(button => button.name ==
"Aura_Button_" + 1), panel); // 1 is just random number
AuraButtons 确实包含指定的按钮,但是我得到以下异常:InvalidCastException: Cannot cast from source type to destination type. 该方法将按钮作为参数但它不会接受它?这就是方法签名
private static void UpdateAuraIcon(Button auraButton, GameObject panel)
我什至不能传递一个整数作为参数:
private static void UpdateAuraIcon(int order)
UpdateAuraIcon(1);
仍然抛出同样的异常。
布尔 c__AnonStorey3:m__B (Button)+0x0 C# 对象 System.Linq.Enumerable:Single (IEnumerable
1, Func2, Fallback)+0x22 at :-1
对象 System.Linq.Enumerable:Single (IEnumerable1, Func2)+0xa at :-1 Void Assets.Scripts.Manager:UpdateSelectedAuraPanel (AuraOrder)+0x97 C# Void Assets.Scripts.Manager:SetCurrentAura (GameObject)+0x74 C# 无效 UnityEngine.Events.InvokableCall1:Invoke (Object[])+0x3a at C:\buildslave\unity\build\Runtime\Export\UnityEvent.cs:184 C# Void UnityEngine.Events.CachedInvokableCall1:Invoke (Object[])+0x7 at C:\buildslave\unity\build\Runtime\Export\UnityEvent.cs:302 C# 无效 UnityEngine.Events.InvokableCallList:Invoke (Object[])+0x53 at C:\buildslave\unity\build\Runtime\Export\UnityEvent.cs:630 C# 无效 UnityEngine.Events.UnityEventBase:Invoke (Object[])+0xd at C:\buildslave\unity\build\Runtime\Export\UnityEvent.cs:765 C# 无效 UnityEngine.Events.UnityEvent:Invoke ()+0x7 at C:\buildslave\unity\build\Runtime\Export\UnityEvent_0.cs:53 C# void Assets.Scripts.Manager:CheckKeys (Dictionary2, Predicate1)+0x2d C# void Assets.Scripts.Manager:Update ()+0x89 C#
【问题讨论】:
-
你能发布异常堆栈跟踪和相关代码吗?推荐阅读-meta.stackoverflow.com/questions/260648/….
-
@EugenePodskal 添加了堆栈跟踪(是吗?)
-
可能问题出在
FindObjectsOfType并且仅在真正评估集合时发生;通过使用 Single(需要遍历整个序列以确保它是真正的单) -
我尝试使用 foreach 遍历集合,当我找到一个值时,我刚刚跳出循环,将结果存储在变量中,然后将其传递给方法仍然没有运气,同样的异常被抛出..
-
IEnumerable<Button> a = Settings.AuraButtons.Where(button => button.name == "Aura_Button_" + order);返回 1 个项目的集合。
标签: c# user-interface unity3d