前提・実現したいこと
こんにちは。Unity初心者です。
添付した画像をご覧いただきながら読んでいただければ、伝わりやすいかと思います。よろしくお願いします。
UnityでUIを作っています。元となるCanvasが2つあります。画像のA_CanvasとB_Canvasです。A_Canvasの子オブジェクトとして3つのCanvas(pageCanvas01~03)があります。B_Canvasには子オブジェクトとして(pageCanvas04という)Canvasが1つあります。画像の①の部分のボタンを押すことによって、A_Canvas内の3つのCanvasを表示・非表示させています。画像の右下にありますがOnClick()でCanvas.enabledを操作しています。また、画像の②の部分を押すことによって、A_CanvasとB_CanvasもOnClick()のCanvas.enabledで表示・非表示させられて、これもきちんと動きます。しかし、②でA_CanvasとB_Canvasの切り替え操作をした後、①でA_Canvas内の3つのCanvasを操作しようとすると”ArgumentException: method arguments are incompatible”というエラーが出てボタンがきかなくなってしまいます。これを解消し、②の操作後でも①でのボタン操作を可能にしたいのですが、どうすればよいのか教えていただきたいです。
長くなってしまいましたが、よろしくお願いします。また、今わたしがやっているやり方でなく、もっといい手段があるよ、ということもありましたら、ご教授いただければ幸いです。重ね重ねよろしくお願いします。
発生している問題・エラーメッセージ
ArgumentException: method arguments are incompatible
System.Delegate.CreateDelegate (System.Type type, System.Object firstArgument, System.Reflection.MethodInfo method, System.Boolean throwOnBindFailure, System.Boolean allowClosed) (at <695d1cc93cca45069c528c15c9fdd749>:0)
System.Delegate.CreateDelegate (System.Type type, System.Object firstArgument, System.Reflection.MethodInfo method) (at <695d1cc93cca45069c528c15c9fdd749>:0)
UnityEngine.Events.InvokableCall1[T1]..ctor (System.Object target, System.Reflection.MethodInfo theFunction) (at <127e81e1cb3441cc97d26b1910daae77>:0) UnityEngine.Events.CachedInvokableCall
1[T]..ctor (UnityEngine.Object target, System.Reflection.MethodInfo theFunction, System.Boolean argument) (at <127e81e1cb3441cc97d26b1910daae77>:0)
UnityEngine.Events.PersistentCall.GetRuntimeCall (UnityEngine.Events.UnityEventBase theEvent) (at <127e81e1cb3441cc97d26b1910daae77>:0)
UnityEngine.Events.PersistentCallGroup.Initialize (UnityEngine.Events.InvokableCallList invokableList, UnityEngine.Events.UnityEventBase unityEventBase) (at <127e81e1cb3441cc97d26b1910daae77>:0)
UnityEngine.Events.UnityEventBase.RebuildPersistentCallsIfNeeded () (at <127e81e1cb3441cc97d26b1910daae77>:0)
UnityEngine.Events.UnityEventBase.PrepareInvoke () (at <127e81e1cb3441cc97d26b1910daae77>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <127e81e1cb3441cc97d26b1910daae77>:0)
UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:68)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:110)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/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 Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:262)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:385)
該当のソースコード
スクリプトはありません
試したこと
googleで調べてみましたがわかりませんでした。
補足情報(FW/ツールのバージョンなど)
Unity 2020.3.11f1
あなたの回答
tips
プレビュー