【3Dゲームエンジン】Unity質問スレッド24at GAMEDEV【3Dゲームエンジン】Unity質問スレッド24 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト332:名前は開発中のものです。 16/05/14 22:05:00.75 s0yYIIfh.net >>326 struct(構造体)は参照でなく値を渡して来るんだよ その場合でいうなら「color」は本体の参照だから書き換えれば反映されるけど、 「color.a」は値のコピーでしかないからいくら書き換えたところで本体には何も影響を与えない 333:名前は開発中のものです。 16/05/14 22:06:46.89 6ROUUvhW.net なるほどどもども 例えばPerlなら受け取り側をデリファレンスして @$array_ref[0] = "hoge"; みたいなことができるけど まあ、見難くなるだけかw 334:名前は開発中のものです。 16/05/14 23:27:26.17 Rbe5JMwy.net >>328 何か勘違いしてるようだがRenderer.materialsの型はArrayで、classであってstructじゃないぞ? この場合問題なのはUnityの仕様でArrayを返す際に配列のコピーを返すってことだ。 http://docs.unity3d.com/ja/current/ScriptReference/Renderer-materials.html ↑を見ると以下のようにある。 Unity によって返されるすべての配列のようにこれはマテリアルの配列のコピーを返すことに注意してください。 その配列でいくつかのマテリアルを変更したい場合、値を取得し、エントリーを変更して、 戻すマテリアルを設定します。 なおColorやVector3辺りを設定する場合に同様の問題が出るのはColorやVector3がstructだからで正しい 重箱の隅をつつくようだがこの辺の違いをきちんと理解してないと後々罠に嵌るかもしれんよ 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch