Unityで理不尽な目にあった。。4日以上悩んでました
色々ググってみたし、ChatGPT/Copilotにさんざん質問しまくっても解決しない問題に直面してました。
SetActiveをいじって、非表示を表示にするってだけですが、4日以上かかりました。
動画をご覧ください。
聡明な皆さんは知っているのかしら?
コンポーネントをスクリプトで無効/有効にする方法としてSetActiveを使いますよね?
※動画アップした後にSetActiveよりもenabledの方が重くないとの情報が・・・後でやってみよ
selectionMarker.SetActive(isSelected);//isSelectedはbool値
こんな一行でゲームオブジェクトをON/OFF出来るわけですが、
さっぱり動かない・・・
CanvasUI特有なのか?プレハブの入れ子だと動かない?親子関係?とか
検索してもChatGPTでも分からず、Debug.Logで追いましょうって・・・
やりましたよさんざん!ほぼ全行にこんなんを!
public void SetSelectionMarker(bool isSelected)
{
if (selectionMarker != null)
{
selectionMarker.SetActive(isSelected);
Debug.Log("Selection marker is " + (isSelected ? "active" : "inactive"));
}
else
{
Debug.LogError("Selection marker is not assigned.");
}
}
んで色々試行錯誤しながらどうやら、Inspector上の設定という根本的な事っぽいことにたどり着きましたが、これもどこをどー見ても間違ってない!
ふと、Inspector上の入れ方を最初から設定しようとプレハブ側から選択ターゲット「SelectionMarker」をスクリプトのコンポーネントにD&Dして、一応親のターゲットHUDからクリックしてリンク先見たら親のリンク先になっている!?これが正解!?
こんなん分かるわけねーじゃん!!
どこをどーみても、セットするオブジェクト入れるじゃんよぉおおお!
というわけで、SetActive(enableも?)が上手くいかなかったらプレハブ側からセットしたいオブジェクトを選んでね。
Projectから直接持っていかないでね!ってことでした!
4日前の俺に「ProjectにあるプレハブそのものをD&Dじゃなくて、親プレハブ開いてそのHierarchyに見えている方の子プレハブをD&Dするんだ!」って言いたいよ・・
それでは、また!
この記事が気に入ったらサポートをしてみませんか?