[過去ログ]
【ゲームエンジン】Unityなんでも質問スレpart12 (1002レス)
【ゲームエンジン】Unityなんでも質問スレpart12 http://mevius.5ch.net/test/read.cgi/gamedev/1699257023/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
523: 名前は開発中のものです。 [sage] 2023/12/05(火) 23:59:58.17 ID:6pM56La3 >>518 アイテムオブジェクトはプレハブなので違います。 出すオブジェクトはまた別のserializefield Gameobject 位置情報はserializefield Transform 書いたほうが早いかな。 SerializeField GameObject obj; SerializeField Transform pos; Instantiate(obj,pos.position,Quaternion.Identity); アタッチするのはobjに出したいアイテム posにモンスターの子オブジェクトに空のゲームオブジェクトをアタッチしてそのままそれをposに。 posがモンスターからの相対座標になるので好きなところにどうぞ http://mevius.5ch.net/test/read.cgi/gamedev/1699257023/523
524: 名前は開発中のものです。 [sage] 2023/12/06(水) 00:27:56.46 ID:ehIycmKR >>523 ほんと何度もすみません。 現在、結局SerializeFieldを一回も記述すること無く、>>521のコード記述で 敵オブジェクトと重なる様に生成される状態です。 あなた様はSerializeFieldを取り入れたコードを教えてくださいましたが これがまさにUnityのわかりにくい仕様のひとつで SerializeFieldを入れなくても自分は同じ状況を実行できています。 結果が同じならどっちでもいいよ、って感じなのかもしれませんが 私は初心者で、あなた様は熟練者ですから つまりSerializeFieldを使うほうが合理的ということだと思うんです。 なので私はSerializeFieldの扱い方を理解したいのですが、、まだよくわかりません。 SerializeFieldを使う方が良い理由を教えてもらると助かります。 コード教えてくださってありがとうございます。 あと、>>523のコードでも引数を見るに、 pos.y -= 1fして生成したいってことで>>521みたく posを修正するコードを記述しても反映されないってなりそうです。 よかったら>>521のコードのなにがダメでpos.y -= 1fが反映されずに プレハブが生成されてしまうのか教えてもらえないでしょうか。 http://mevius.5ch.net/test/read.cgi/gamedev/1699257023/524
527: 名前は開発中のものです。 [sage] 2023/12/06(水) 01:05:38.20 ID:ehIycmKR すごい!>>523さんのやり方 完成しました! これは凄いやり方ですね! 親オブジェクトの座標(生成したい座標)を取得するためだけに 空のオブジェクトを子オブジェクトにするなんて! その空オブジェクトのtransformを使うと!! これがUnityなんですね!? 感動しました! 空オブジェクトの座標をいじっておけば 生成するときに調整しなくていいのは凄い!! ありがとうございます! 少し理解が深まった気がします! http://mevius.5ch.net/test/read.cgi/gamedev/1699257023/527
625: 名前は開発中のものです。 [sage] 2023/12/12(火) 00:46:38.09 ID:fxLNnORX >>619 ありがとうございます。 確かにその通りに記述したら同じ動作になりました! GameObject型の変数.GetComponent<prefabのクラス名>().Type(5);と記述してたのに クラス名型の変数.Type(5);だけで実行できる様になりました。 もともと宣言は>>523の教えてくださった [SerializeField] GameObject prefab_A; と宣言してインスペクタにprefabのオブジェクトをアタッチして Unityのこういうものだという流れが掴みかけていたのですが >>545さんのやり方で [serializeField] prefabAのクラス名 prefab_A; prefab_Aにprefabのオブジェクトをアタッチしても まったく同じ様に動いてます。 そのことで現在ちょっと戸惑っていまして。 というのも、再生したらどちらでもちゃんとプレハブのオブジェクトが生成されるんですが [SerializeField]にGameObject型で宣言するのと [SerializeField]にプレハブオブジェクトのクラス型で宣言するのとで 結果が同じということ、後者はプレハブのオブジェクトをアタッチしていないじゃないですか? (アタッチされてるのもスクリプトみたいですし) Instantiateの引数にもクラス名しか入れてないですし。 オブジェクト型で作るほうは、クラスもオブジェクト生成もイメージはしやすいですが、 後者はプレハブオブジェクトはそっちのけに感じるのに 前者と同じ様にプレハブのオブジェクトがそこに発生しました。 このふたつの宣言で、なにが起きてうのか解説願いませんでしょうか。 また、同じに見えて、実はなにかが違うのでしょうか? そしてこのふたつのやり方は、状況によって使い分けすべきなんでしょうか? Unityを触ってまだ二ヶ月弱ですが ここをどうしても理解しときたいので、教えて頂けないでしょうか? お願い致します! http://mevius.5ch.net/test/read.cgi/gamedev/1699257023/625
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.039s