前提・実現したいこと
UIのButtonのOnclick()メソッドが実行されたら、OnClickGetSprite()メソッドで、
クリックしたButtonのtransform をEmojiAに代入したいです。
” Object of type 'UnityEngine.Object' cannot be converted to type 'UnityEngine.UI.Button'”
というエラーになりました。解決方法についてご教示いただけますと幸いです。
発生している問題・エラーメッセージ
エラーが何行目か記載してほしいとのご依頼があったのですが、エラー文をみても記載がありません。
おそらく、public void OnClickGetSprite(Button button)の部分かな?と思っています。エラーの全文をコピペで貼っておきます。
Object of type 'UnityEngine.Object' cannot be converted to type 'UnityEngine.UI.Button <全文> ArgumentException: Object of type 'UnityEngine.Object' cannot be converted to type 'UnityEngine.UI.Button'. System.RuntimeType.CheckValue (System.Object value, System.Reflection.Binder binder, System.Globalization.CultureInfo culture, System.Reflection.BindingFlags invokeAttr) (at <fb001e01371b4adca20013e0ac763896>:0) System.Reflection.MonoMethod.ConvertValues (System.Reflection.Binder binder, System.Object[] args, System.Reflection.ParameterInfo[] pinfo, System.Globalization.CultureInfo culture, System.Reflection.BindingFlags invokeAttr) (at <fb001e01371b4adca20013e0ac763896>:0) System.Reflection.MonoCMethod.DoInvoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <fb001e01371b4adca20013e0ac763896>:0) System.Reflection.MonoCMethod.Invoke (System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <fb001e01371b4adca20013e0ac763896>:0) System.Reflection.ConstructorInfo.Invoke (System.Object[] parameters) (at <fb001e01371b4adca20013e0ac763896>:0) UnityEngine.Events.PersistentCall.GetObjectCall (UnityEngine.Object target, System.Reflection.MethodInfo method, UnityEngine.Events.ArgumentCache arguments) (at <4cc8ec075538416496e5db5d391208ac>:0) UnityEngine.Events.PersistentCall.GetRuntimeCall (UnityEngine.Events.UnityEventBase theEvent) (at <4cc8ec075538416496e5db5d391208ac>:0) UnityEngine.Events.PersistentCallGroup.Initialize (UnityEngine.Events.InvokableCallList invokableList, UnityEngine.Events.UnityEventBase unityEventBase) (at <4cc8ec075538416496e5db5d391208ac>:0) UnityEngine.Events.UnityEventBase.RebuildPersistentCallsIfNeeded () (at <4cc8ec075538416496e5db5d391208ac>:0) UnityEngine.Events.UnityEventBase.PrepareInvoke () (at <4cc8ec075538416496e5db5d391208ac>:0) UnityEngine.Events.UnityEvent.Invoke () (at <4cc8ec075538416496e5db5d391208ac>:0) UnityEngine.UI.Button.Press () (at C:/Program Files/2020.1.0f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/UI/Core/Button.cs:68) UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/Program Files/2020.1.0f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/UI/Core/Button.cs:110) UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/Program Files/2020.1.0f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:50) UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at C:/Program Files/2020.1.0f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:261) UnityEngine.EventSystems.EventSystem:Update() (at C:/Program Files/2020.1.0f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/EventSystem.cs:376)
該当のソースコード
C#
1using UnityEngine; 2using UnityEngine.UI; 3public class EmojiMove : MonoBehaviour 4{ 5 //最初にクリックされたSpriteのPosition 6 Transform EmojiA; 7 //二回目にクリックされたSpriteのPosition 8 Transform EmojiB; 9 bool isEmojiA; 10 bool isEmojiB = true; 11 public void ChangePosition() 12 { 13 Vector3 tmpA = EmojiA.transform.position; 14 Vector3 tmpB = EmojiB.transform.position; 15 EmojiA.transform.position = tmpB; 16 EmojiB.transform.position = tmpA; 17 } 18 public void OnClickGetSprite(Button button) 19 { 20 if(isEmojiA == false) 21 { 22 EmojiA = button.transform; 23 isEmojiA = true; 24 isEmojiB = false; 25 Debug.Log(button); 26 } 27 else if(isEmojiB == false) 28 { 29 EmojiB = button.transform; 30 isEmojiB = true; 31 Debug.Log(button); 32 } 33 } 34}
回答1件
あなたの回答
tips
プレビュー