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

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

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

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

Q&A

解決済

1回答

3138閲覧

コンポーネントを外すことができない。 Can't remove XXX because

beginner_F

総合スコア12

Unity

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

0グッド

0クリップ

投稿2020/10/20 22:10

編集2020/10/21 08:01

Unityでデータ保持用のオブジェクトに不要なSpriteRendererがアタッチされていたのでプロジェクトより選択して、コンポーネントを外そうとしたのですがデータ保持用のスクリプトPlaceData(Saipt)が依存しているため外せないと表示されました。

調べてみたのですが、UnityEngine.RequireComponentというものがあるようですがそれは初めて知ったもので、使用していません。念の為関連したスクリプトからSpriteRendererを検索し不要なコードなどを削除しましたが、やはり外すことができません。

UnityEngine.RequireComponent 以外でスクリプトが依存している場合はどのような場合があるでしょうか、ご教授お願いします。

メッセージは以下のようになります、何故か複数回表示されています。

Can't remove SpriteRenderer because PlaceData (Script), PlaceData (Script), PlaceData (Script), PlaceData (Script), PlaceData (Script) depends on it

イメージ説明

using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlaceData : MonoBehaviour { public string Name = "Name"; public int Durable = 1000;// 耐久値 // public int Security = 10; // ビジュアルマップ public int[] MapSizeXY = new int[] { 10, 10}; public GameObject[][] VmapCharaDate; public GameObject[][] MapFloorDate; public GameObject VmapObj; public bool ShowMap = false; public int AllList_ID; public int PiaceID; public int DeepNum = 3; public int PiaceNum = 5; public int SetNeedDeep = 1; public bool Master = false; public bool Building = false; public bool BuildingNeed = false; public bool BuildingCant = false; public bool Artificial = false; public bool ArtificialNeed = false; public bool ArtificialCant = false; // インスタンス public PlaceData ParentPD; public GameObject[] PiaceList; public GameObject[][] PiaceMap; public GameObject placeSelectButton; public int MaxStayChara = 5; public GameObject[] StayCharaList; // 落ちているアイテム public GameObject[] ItemList; // 基底から移植 VisualMapDirector VMD; public void GetVisualMapDiretor() { GameObject go = GameObject.Find("Director"); VMD = go.GetComponent<VisualMapDirector>(); } public static GameObject[][] Return_Jagge_GameObj(int[] Size) { GameObject[][] Array = new GameObject[Size[0]][]; for (int i = 0; i < Array.Length; i++) { Array[i] = new GameObject[Size[1]]; } return Array; } // スタート********************************************************************** void Start() { // ビジュアルマップ データ GetVisualMapDiretor(); VmapCharaDate = Return_Jagge_GameObj(MapSizeXY); MapFloorDate = Return_Jagge_GameObj(MapSizeXY); // キャラリストの準備 StayCharaList = new GameObject[D.AllMapCharaList.Length]; } // クラス関数********************************************************************** public int CountStayChara()// マップのキャラクターの数を返す。 { int Count = 0; for (int i = 0; i < StayCharaList.Length; i++) { if (StayCharaList[i] != null) { Count++; } } Debug.Log("マップに滞在中のキャラクター数_" + Count); return Count; } public int DeepOfMax(GameObject[] List) { int Deep = 0; for (; Deep < List.Length; Deep++) { if (List[Deep] == null) { break; } } return Deep; } public int DeepOfMax() { int Deep = 0; for (; Deep < PiaceList.Length; Deep++) { if (PiaceList[Deep] == null) { break; } } Deep--; Debug.Log(Name + "DeepOfMax_ReTurn" + Deep); return Deep; } public bool CharaListSerch() { for (int i = 0; i < StayCharaList.Length; i++) { if (StayCharaList[i] != null) { if (!StayCharaList[i].GetComponent<ADVCharaState>().Hiden) { return true; } } } return false; } public bool PlaceExistenceCheck() { for (int i = 0; i < PiaceList.Length; i++) { if (PiaceList[i] != null) { return true; } } return false; } }

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

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

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

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

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

lazh

2020/10/21 03:48

PlaceData.csの中身と >Unityでデータ保持用のオブジェクト のInspectorをスクショでもいいので撮ってもらえたら助かります
beginner_F

2020/10/21 08:02

見ていただいてありがとうございます、コード、ss追加しました。 汎用の継承元がありましたが必要な部分だけ移植しました。
guest

回答1

0

ベストアンサー

UnityEngine.RequireComponentというものがあるようですがそれは初めて知ったもので、使用していません。
汎用の継承元

使用していないというのは自分で書いていないだけで、継承していないというわけではない、という前提ですが、RequireComponentが付いたスクリプトを継承している場合にRemoveを選択すると似たような警告が表示されました

イメージ説明

イメージ説明

関係あるといいのですが...

投稿2020/10/21 12:52

lazh

総合スコア300

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

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

beginner_F

2020/10/21 13:55

ありがとうございます。 結果としては自分のミスで継承元にRequireComponentが使用されていたようです。 SpriteRenderやRequireComponentをソリューション全体で検索したはずだったのですが漏れていたようです、丁寧に対応していただいたのに申し訳ありません。 ですが頂いた回答を見て再度継承元たどって発見できましたので感謝しています、ありがとうございました。
beginner_F

2020/10/21 13:57

念の為に付け足すと、基底クラスは参考書などで使用を許可されたものでその上にいくつか重ねていたためにになります。
lazh

2020/10/21 14:35

解決出来たみたいで良かったです 人間ですから漏れは仕方ないです自分もたまにやります.. 気にしないでください!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問