[過去ログ]
【ゲームエンジン】Unityなんでも質問スレpart12 (1002レス)
【ゲームエンジン】Unityなんでも質問スレpart12 http://mevius.5ch.net/test/read.cgi/gamedev/1699257023/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
87: 名前は開発中のものです。 [] 2023/11/19(日) 01:01:17.50 ID:BYVRHENG >>75 ありがとうございます!なんか良さそうです! 解説動画もあるし、これは調べてみる価値あります! あと初心者として皆さんに質問させてください。 まったく関係ない話なんですがオブジェクトの座標をupdate関数内で更新するのに transform.position = new Vector2(transform.position.x - 1f, transform.position.y); みたく、毎回毎回Vector2をnew(生成)しないといけないのはなぜですか??? 例えばC言語とかだと、同じ様な更新でも座標にしてる変数を「pos-x -= 1;」だけでいいです。 そのイメージで考えると、毎回newまでするの「なんで?」って思ってしまって。 transformがオブジェクトの位置、座標の情報を付与するためのコンポネントだとして 座標をいじるのにそれをいじらなければならないとするなら そのオブジェクトのupdate関数の中で「transform.position.x -= 1f,」でよくないですか? それで変わってくれれば話早くないですか? unityはなぜX座標を更新するだけのために毎回更新するときに transform.position = new Vector2(transform.position.x - 1f, transform.position.y);まで 記載しなきゃ触れないんでしょう? どなたか熟知されてる方、unityを理解したいので理由をわかりやすく教えてください。 http://mevius.5ch.net/test/read.cgi/gamedev/1699257023/87
91: 名前は開発中のものです。 [sage] 2023/11/19(日) 05:33:17.92 ID:QVCHme1W C#構造体は罠が多いから使うなとまで言う人もいるくらいだからなあ >>87 C#の構造体は値型なのでヒープには作られず参照は使用されない。そのため構造体変数への代入は毎回全データのコピーが発生する newがいるのはコンストラクタを呼び出すためで、コンストラクトが完了してない変数は使用できないという制限をクリアするため Cの構造体のnewのようにメモリアロケートが発生しているわけではない transform.positionはプロパティなので値を取得した時点で中身がコピーされた別データになる このためxだけを変えても「コピーのxを変える」という操作にしかならない http://mevius.5ch.net/test/read.cgi/gamedev/1699257023/91
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.819s*