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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Unity

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

Q&A

1回答

2039閲覧

スクリプト名が重複しているとcomponentを取得できない

Sakito

総合スコア0

Unity

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

0グッド

0クリップ

投稿2021/04/28 20:08

編集2021/04/29 07:58

前提・実現したいこと

Unityにて
あるGameObject(以下GameObject1)に同じクラス名のスクリプト(以下Script)をアタッチしています。
それぞれ名前空間(以下MyName1, MyName2)をつけて区別しています。
そのGameObjectにアタッチされているMyName1.Scriptの方を取得したいのですが、

c#

1[SerializeField] MyName1.Script script;

のようにして、inspector上でGameObject1をアタッチしても、None(script)となり取得できません。

追加アセットによる衝突ですので、クラス名自体を変更することは避けたいです。
対処法をご教授お願い致します。

補足情報(FW/ツールのバージョンなど)

Unity 2020.3.3f1

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

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

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

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

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

f-rank

2021/04/28 23:40

同じような状況で試してみましたが、私は問題なくアタッチできました。 面倒かもしれませんが、似たような状況を作ってできるか確認してみてください。 もしできたなら原因は他にあるかもしれません。
fiveHundred

2021/04/29 00:10

> [SerializeField] MyName.Script script; MyName1.Scriptの間違いなのでは?
Sakito

2021/04/29 07:42

回答ありがとうございます。 >> f-rank様 一方のスクリプトをcomponentからremoveするとアタッチできるようになったため、重複が原因になっていると思います。 >> fiveHundred様 ご指摘ありがとうございます。teratailにて質問した際に記載ミスをしました。 実際は正しいnamespaceで入力していたため、他に原因があります。
guest

回答1

0

コンポーネントをアタッチする順番を入れ替えたら解決しました。
具体的には、取得したいスクリプトを、同じ名前のスクリプトより上に配置しました。
しかし、2つのスクリプトをそれぞれ取得したいときに困るため、対処法を模索中です。

投稿2021/04/29 09:14

Sakito

総合スコア0

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

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

sakura_hana

2021/04/30 00:17

全く同じクラスの複数コンポーネントならGetComponents(最後にs)で取得できますが今回の場合別のクラス扱いになると思うので、 GetComponentで個々に取得するのが確実かと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問