質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1064閲覧

UnityでCanvasのButtonのTransformを変数として利用したい

MikanChan

総合スコア13

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/11/20 02:40

編集2020/11/20 05:11

前提・実現したいこと

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)

Buttonのインスペクターの情報
イメージ説明

該当のソースコード

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}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hogefugapiyo

2020/11/20 04:57

当方の環境でエラーが再現しなかったので、ボタンのインスペクターの情報(OnClick)のスクショや、エラーがコードの何行目で起きているかなども追記していただけますか?
guest

回答1

0

ベストアンサー

On ClickのNone (Button) っていうところにボタンをドラッグドロップしたらどうなりますか?

投稿2020/11/20 05:51

hogefugapiyo

総合スコア3302

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MikanChan

2020/11/20 06:02

ボタンをドラッグドロップしたのですが、同様のエラーとなっております。
MikanChan

2020/11/21 11:13

もう一度ドラッグアンドドロップしたら、動きました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問