[過去ログ] 【3Dゲームエンジン】Unity質問スレッド31 [無断転載禁止]©2ch.net (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
145: 2017/09/09(土)14:31 ID:cqWKEkW3(1/4) AAS
>>118

オブジェクト名「A」
スクリプト名「TestSC」

A
└TestSC

オブジェクト名「B」
スクリプト名「Test2SC」

B
└Test2SC

TestSC内にある「public int a;」をオブジェクトBのTest2SCから見たい時は
Test2SCで次のようにすればできる

TestSC ScriptObj = GameObject.Find("A").GetComponent<"TestSC">();
Debug.Log( ScriptObj.a );

いちいち代入したくないのなら次のようにしても出来る

Debug.Log( GameObject.Find("A").GetComponent<"TestSC">().a );

これが>>128さんが言ってる事。
147
(3): 2017/09/09(土)14:41 ID:cqWKEkW3(2/4) AAS
最近素朴な疑問があるんだが
他のオブジェクトにアタッチされてる頻繁に参照したいスクリプトやtransform類って
下のようにStartで取得してそのスクリプトのメンバー変数に保持し続けること多いやん?

GameObject a;
GameObject b;

void Start(){
a = GameObject.Find("a");
b = GameObject.Find("b");
}

サンプルコード程度ならこれでいいんだが、実際にゲーム作ってると
あっちこっちのスクリプトで似たようにStart()でaとbを保持し続ける事が増えていきて
同一スクリプトを他のあちらこちらで重複して保持が増えてなんか無駄に感じる

そこで
static class tmp {
static GameObject a;
static GameObject b;
}
を作り、まあどっかのスタートアップで一度だけ

tmp.a = GameObject.Find("a");
tmp.b = GameObject.Find("b");

と保持させて、全てのスクリプトからこっち使う方が効率いいんじゃないかと思ってきたわけだが実際どうなのかな?
これをやるとあっちこっちのStart()で同じような事しなくて済むと思うんだが
148: 2017/09/09(土)14:43 ID:cqWKEkW3(3/4) AAS
あ、public抜けてたけどまあ通じると信じてる

static public class tmp {
static public GameObject a;
static public GameObject b;
}
153: 2017/09/09(土)16:59 ID:cqWKEkW3(4/4) AAS
>>151-152
シングルトンか
言葉だけは知ってるが使った事ないやつだわ
いい機会だから調べて見るわ
ありがとう
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.028s