【3Dゲームエンジン】Unity質問スレッド1
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2012/04/20(金) 13:11:07.27ID:wu5IoHobWindows/Mac用。JavaScript/C#/Booといった汎用言語を使用できるのが特徴です。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3他
次スレは>>970を踏んだ方が建てること。ダメなら>>980か>>990が建てて下さい。
■本スレ
【3Dゲームエンジン】Unity 13
http://toro.2ch.net/test/read.cgi/gamedev/1334399781/
■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
http://www24.atwiki.jp/unity2ch/
●リンク
・Unity(日本公式サイト)
http://unity3d.com/japan/
・ユーザーガイド&リファレンス
http://unity3d.com/support/documentation/
(日本語訳)
http://ws.cis.sojo-u.ac.jp/~izumi/Unity_Documentation_jp/Documentation/Manual/
・チュートリアル
http://unity3d.com/support/resources/tutorials/
・FAQ
http://answers.unity3d.com/index.html
・Unityのスクリプト公式
http://unity3d.com/support/documentation/ScriptReference/index.html
・MSDN
http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
0188名前は開発中のものです。
2012/04/28(土) 12:49:16.17ID:vgw1yD7b125と126のnewMaterialを適当な名前に置き換えればokだったと思う
newMaterial2とか
0189名前は開発中のものです。
2012/04/28(土) 13:01:06.90ID:c3Xjxk2jhttp://upload.fam.cx/cgi-bin/img-box/ak3120428125818.jpg
やっぱり無理みたいですね。
>>187
消してもやっぱり一緒でした。
0190名前は開発中のものです。
2012/04/28(土) 13:08:23.17ID:IcajE+xPそっちじゃない。
>>188が言ってるのは125行目の左側の変数だよ
同じ変数名のやつをリネームせんと
スペースは不要
0191名前は開発中のものです。
2012/04/28(土) 13:21:14.53ID:I/CCHCTr125-126行目の変数名置き換えるなら
for (var newMaterial2 in fade.alphaMaterials)
;
Destroy(newMaterial2);
こうだよね
0192名前は開発中のものです。
2012/04/28(土) 13:21:38.30ID:I/CCHCTr0193名前は開発中のものです。
2012/04/28(土) 13:29:33.53ID:Xyyt2mPD描画の仕組みを詳しく知ればわかるんだけど
描画する順番なんて単純な問題じゃねーんだよ
3Dの描画はZバッファちゅーもんが描き込み時にピクセルごとのZ値を保持しておいて
次に描くもんが描画するべきか否かを判断してるっちゅーわけよ
なので前後ろをきっちりわけたいゆーことは
このZバッファをクリアして次のもんを描画するか(その場合3D前後は保障されないポリゴン単位でおかしくなるので注意が必要)
Zバッファ機能をそもそもOFFにすることが必要になる
大抵3Dの描画は速度アップのために
不透過オブジェクトは前から描画(そうすることで後ろのもんは描画しなくてよいのでかなりの速度アップが見込める)
透過オブジェクトは後ろから描画(透ける=後ろのものから描画しないといけない)
になっているのでたとえZバッファをクリアしてオブジェクト同士の問題を解決したところで背景に一気に塗りつぶされる危険アリ
理由はわかるな
市販のもんできっちり前後わけられてるようなゲームはおそらく
どっかのテクスチャに一旦描画してそれをビルボードかなんかでもう一回描画してんじゃなかろーか?
0194名前は開発中のものです。
2012/04/28(土) 13:30:48.46ID:c3Xjxk2j>>190
勘違いですいませんでした。
0195名前は開発中のものです。
2012/04/28(土) 16:39:59.08ID:0wIWnV8V0196名前は開発中のものです。
2012/04/28(土) 17:16:24.87ID:5VYsZfDo0197名前は開発中のものです。
2012/04/28(土) 22:03:16.95ID:iL/JqVi10198名前は開発中のものです。
2012/04/28(土) 22:07:20.48ID:BKsWWcMX0199名前は開発中のものです。
2012/04/28(土) 22:19:04.61ID:AIlp/IeLblenderから読み込んだ3dモデルがrigidbodyを追加しても他のrigidbodyを追加したオブジェクトを通過してしまいます
どうすれば物理挙動をしてくれるのか教えて下さい
0200名前は開発中のものです。
2012/04/28(土) 22:34:09.63ID:0wIWnV8Vそれは検索した方が早いよ。
0201名前は開発中のものです。
2012/04/28(土) 22:59:21.98ID:AIlp/IeL改めて検索したら出てきました、スレ汚してすいません
0202名前は開発中のものです。
2012/04/29(日) 01:15:11.45ID:pJw9ouEuちょっとUnityやプログラム理解しないと対処しづらいからチュートリアルとしてはちょっと、と思った
0203名前は開発中のものです。
2012/04/29(日) 01:20:49.11ID:eMZ/a5pp質問以外は総合スレに書くようにしてくれまいか。すまんね。
0204名前は開発中のものです。
2012/04/29(日) 03:15:26.99ID:0edDrWsFこれだとCrossFadeの時みたいに自然な切り替えができない
こういう場合、やっぱりWeightをいちいち変えていかないとダメかな?
0205名前は開発中のものです。
2012/04/29(日) 03:19:37.98ID:eMZ/a5pp0206名前は開発中のものです。
2012/04/29(日) 03:41:34.26ID:0edDrWsF0207名前は開発中のものです。
2012/04/29(日) 03:57:01.98ID:eMZ/a5pp0208名前は開発中のものです。
2012/04/29(日) 08:53:36.21ID:yhPWZvLqC++でも使えますか?
0209名前は開発中のものです。
2012/04/29(日) 08:56:15.61ID:VKuklqm4同意。FPS Tutorialの方が100倍わかりやすい
0210名前は開発中のものです。
2012/04/29(日) 16:04:43.80ID:bxrAnjnFどんなライブラリですか?に対して、ゲームエンジンだ、と答えるような場面もあれば、
このゲームエンジンの中の物理演算部分は○○ライブラリを利用してると答えたり
目的やまとまりの概念、その名称のこと
C++でコーディングインタフェースは、Free版での提供は無いけど、
そう言う意味でなく、C++で書いた自前のメインコードから利用する、みたいな意味なら基本的に無理
0211名前は開発中のものです。
2012/04/29(日) 17:00:54.76ID:Kav1tEbR0212名前は開発中のものです。
2012/04/29(日) 17:09:10.72ID:XIPPf9sIこのあたりの言葉って結構あいまいだよね
0213名前は開発中のものです。
2012/04/29(日) 17:23:06.81ID:bxrAnjnF簡単に言えば文脈と意図の表現だもんな
だから初心者の人がひとつの説明だけで丸覚えの暗記だけで済まそうとすると、
コミュニケーションの道具にも使えないって罠
0214名前は開発中のものです。
2012/04/29(日) 17:35:16.20ID:bxrAnjnF何かの実装方法について話している時に、方法論的な主題に焦点があったりして、そんな時に
「それは Unityのフレームワークではこういう考え方や手段で実装して云々」 とか、
具体的な何か、例えばラスタ画像処理のパッケージだとか、音声処理だとか、その他もろもろ何でも
処理のパッケージ単位について話す時、「そのライブラリはこういう利用のされかたを想定してるようで云々」 とか
もっと実装の実際のコード、個別な細かい何かについて話す時、「それはこのAPIだと、この関数やクラスで云々」 とか、
全体設計面で、例えば Unityでの描画パイプラインなんかについて話す時、
「Unityのそのアーキテクチャは利用コード側の責任で何々、API側が云々と階層を成していて」 だとか、
ざっくり目の前のフレームワーク、ライブラリ、API群について、その目的について話す時
「これはゲームエンジンと呼ばれる種類のプロダクトで」 だとか、そんな感じの区別。
0215名前は開発中のものです。
2012/04/29(日) 17:44:38.01ID:m0pPvQtG別の意味で納得した
0216名前は開発中のものです。
2012/04/29(日) 18:11:23.05ID:bxrAnjnF初心者多いところはどこでもそうだよ
誰でも最初からわかる人なんていないでしょ
0217名前は開発中のものです。
2012/04/29(日) 18:11:53.86ID:Kav1tEbR同じものに違う名前付けたり、時代によって呼び方変えてみたり、環境の変化で指すものが変わってきたりするから、早い話正解はない。
0218名前は開発中のものです。
2012/04/30(月) 12:51:59.80ID:EP0Cu66lどうもフレームの進行とは関係なくモーションが再生されてるようだ。
0219名前は開発中のものです。
2012/04/30(月) 17:51:47.76ID:e769/AemdeltaTime使ってる?
使わないとアニメーション再生速度に問題が出るよ
0220名前は開発中のものです。
2012/04/30(月) 17:53:59.79ID:EP0Cu66lいや、使ってません。delta.Timeを応用してモーションの再生速度を規制できるんでしょうか?
0221名前は開発中のものです。
2012/04/30(月) 17:59:09.37ID:PXWKZh7dと思ったが最初に書いたやつが誤字ってるじゃねーか
Time.deltaTime
http://unity-yb.github.com/articles/frame_and_update.html
C#のスレで優しくされたから俺も優しくしておこう
0222名前は開発中のものです。
2012/04/30(月) 18:00:31.40ID:PXWKZh7d質問者が勝手にドット入れてただけだった
すまんwww
読んでみてね
0223名前は開発中のものです。
2012/04/30(月) 18:02:19.36ID:e769/Aem取り敢えず使ってる言語判らないけどこれ見て試してみて
http://ws.cis.sojo-u.ac.jp/~izumi/Unity_Documentation_jp/Documentation/ScriptReference/index.Keeping_Track_of_Time.html
0224名前は開発中のものです。
2012/04/30(月) 18:12:19.70ID:EP0Cu66lこれはスクリプトによって動きを作ってる場合に時間ごとに処理をさせるためのものですよね?
俺が言ってるのはモーションをフレームと同期させたいという事なんですよ。
あるモーションの再生時間を見ると終端がいつも違う値になりますよね?
これだとうまく処理できないんです。なんとかする方法がありませんかね?
>>222
deltaTimeですね。気をつけます。
>>223
animation.Playあたりにこれを使えればいいんですけどね。いや、でもこれ使えても時間に同期するだけか。
0225名前は開発中のものです。
2012/04/30(月) 18:17:51.23ID:PXWKZh7dFixedUpdate内でdeltaTime使えば、同じ時間のタイミングでモーションを起こして、同じ時間の経過でモーションが終わらないか?
0226名前は開発中のものです。
2012/04/30(月) 18:23:29.05ID:lpQAYLg0フレーム管理はエンジン側だろうし
0227名前は開発中のものです。
2012/04/30(月) 18:25:23.29ID:EP0Cu66lそれだと、俺の場合はちょっと重すぎるかな。フレームきっちり終わるように作れって事なんですかね。
1フレームあたりで進行するモーションの速度が違う。その代わりにモーションはフレームのズレを無視して美しく再生されるってことか。
0228名前は開発中のものです。
2012/04/30(月) 18:26:44.81ID:EP0Cu66lわかるけどね。そういうものが必要とされる状況が少ないから、ほとんどの場合でフレーム無視して作ったとおりに時間通りに再生されるほうが需要が多いというのは。
0229名前は開発中のものです。
2012/04/30(月) 18:32:50.22ID:vQGoZ1pl0230名前は開発中のものです。
2012/04/30(月) 18:49:28.48ID:PXWKZh7d基本FixedUpdateだからわかんね
FixedUpdate+deltaTimeじゃないと環境の処理速度によって動作が変わるから困ると思うんだが・・・
フレームとモーションを同期したい理由がわからない
フレーム単位で処理したいだけならFixedUpdateの方が楽な気がするし、
しょぼい環境によってはモーションが飛ばされるから使いたくないってくらいしか理由が思いつかん
0231名前は開発中のものです。
2012/04/30(月) 20:07:27.70ID:ErrziFNp毎フレームFBXのモーションを1Fづつ読み込むので可変フレームだと環境・状況によって10秒のモーションが11秒だったり9秒にもなる
>>224にあるようにモーションの再生時間がいつも違う値になる
・deltaTimeを使用する
間隔時間で補間するので10秒のモーションなら10秒で終わる
さっき暫く試したけどやっぱ上の様な処理になる
フレームに合わせたいと書いてあるけどUnityはデフォルトでフレームに合わせてFBXからモーション取得するので
FPSが30にも40にも変動する環境上、モーションの再生時間がいつも違う値になるのは当然な気がするのだけど
0232名前は開発中のものです。
2012/04/30(月) 20:24:28.55ID:EP0Cu66lえっ!?
>>230
モーションの終わりを正確に検出しなければならないんですよ。
>>231
ありがとう。
fixedか…う…ぐっ…
0233名前は開発中のものです。
2012/04/30(月) 20:31:22.06ID:PXWKZh7d誤差も0.1〜0.2秒くらいだろ
それも嫌なら、正直、ゲーム設計から考え直した方がいいんじゃ・・・
>>231の言う通り、FPS自体が変動するから、完全に同期しても動作がめちゃくちゃになるだけだと思う
0234名前は開発中のものです。
2012/04/30(月) 20:32:24.16ID:PXWKZh7d試してから次のレスを頼む
0235名前は開発中のものです。
2012/05/01(火) 01:33:38.87ID:TU0U+0Cbアニメーションの時間がおかしい場合は、その可能性が一番高い。
ツールにもよるけど再生フレーム数と出力フレーム数が違ったりするとたまにそうなる。
0236名前は開発中のものです。
2012/05/01(火) 01:56:12.12ID:GjiyNsxP0237名前は開発中のものです。
2012/05/01(火) 01:57:47.41ID:GjiyNsxP0238名前は開発中のものです。
2012/05/01(火) 15:26:40.59ID:E4gFhBmQ0239名前は開発中のものです。
2012/05/01(火) 15:45:53.01ID:fCkj/PYyvar animName : String = "";
var frame : int = 0;
function Start () {
animation.Play(animName);
animation[animName].speed = 0;
}
function Update () {
++frame;
var state : AnimationState = animation[animName];
var maxFrame : int = Mathf.FloorToInt(state.length * 60);
frame = Mathf.Repeat(frame, maxFrame);
state.time = frame / 60.0f;
}
0240名前は開発中のものです。
2012/05/01(火) 17:56:54.00ID:fT2gxy1N別に問題はない
0241名前は開発中のものです。
2012/05/01(火) 21:22:47.67ID:fj4ueXwk0242名前は開発中のものです。
2012/05/01(火) 23:51:46.73ID:BRdwkEDiError while importing package: Couldn't decompress package
UnityEditor.AssetStoreContext:OpenPackage(String, String)
ちなみに64bit環境。
0243名前は開発中のものです。
2012/05/02(水) 00:59:05.18ID:nk4IIMpZ保存先のパスに日本語が入ってると失敗するみたい
0244名前は開発中のものです。
2012/05/02(水) 01:03:50.14ID:p3i7pKC8これなんのアセット?
0245名前は開発中のものです。
2012/05/02(水) 14:29:16.34ID:pDXbjGeT完璧に固定は不可能だがFPSの指定は可能
指定した値から若干上下するが10にも300にも出来る
0246名前は開発中のものです。
2012/05/02(水) 22:03:26.29ID:BRdVmq3Fd
固定フレーム数の時に処理が遅れた場合って、強制的に描画スキップするのかな?
海外製のエンジンだから、スローになったりするイメージはないんだけど…
0247名前は開発中のものです。
2012/05/02(水) 22:59:42.53ID:p3i7pKC8エラーが出てスローになる。
0248名前は開発中のものです。
2012/05/03(木) 04:28:04.86ID:MBWgnq9zマガジンの入れ替えとか結構精密な動作あるから、Blenderで動きだけ作って
Unityにインポートしてから手のボーンの子に武器を配置するのだと、結構誤差がでてくると思う
Blenderで武器もインポートして武器ごとそのリロードアニメーションとして出力するってありかな?
0249名前は開発中のものです。
2012/05/03(木) 09:58:03.58ID:sLKpUhPvUnity自体は可変フレームレート前提で固定フレームレートにするなんて設定は無いだろ
>>245の言ってるのはApplication.targetFrameRateでフレームレートの上限が設定できるって事でさ
固定フレームってフレームレートが固定されてる状態の事を言ってるなら
常に目標フレームレート以上出してそれを制限するんだから処理が遅れてる時点で実現できてないし
フレームレートが固定されている前提で組まれてる処理の事なら
Time.deltaTimeを見なければそれっぽくなると思うが
当然処理が遅れるとスローになるしアニメーションとかPhysicsの処理は
エンジン側で勝手に時間基準で進められるから
フレーム基準のUpdate内の処理と時間基準のアニメーション・Physicsがずれて変な見た目になりそう
>>239のでアニメーションは無理やりフレーム基準な状態にできるっぽいけど
0250名前は開発中のものです。
2012/05/03(木) 22:06:51.51ID:8U2xJ6MBLトリガーで左の武器、Rトリガーで右の武器を使うようなのはどう実現したら良いんでしょうか
9th axisと10th axisがLRに対応してるようなことが海外のサイトに書いてあったのですが、全く反応してくれません
初心者なので用語の使い方が間違っていたらごめんなさい
0251名前は開発中のものです。
2012/05/03(木) 22:08:38.21ID:KZvaRW9+まず値を取ることから始めましょう。そのパッドはとてもイージーです。俺も苦労しました。
0252名前は開発中のものです。
2012/05/03(木) 22:36:53.52ID:8U2xJ6MBさっきは動かなかったのに・・・
>>251
Debug.Log("L:" + Input.GetAxis("L_Trigger") + " R:" + Input.GetAxis("R_Trigger"));
と書いていましたが、ずっと0と表示されていました
0253名前は開発中のものです。
2012/05/05(土) 15:33:40.14ID:4Z1053c5http://unity3d.com/support/documentation/ScriptReference/Vector3.Set.html
0254名前は開発中のものです。
2012/05/05(土) 17:38:43.33ID:ejQe8rziVector3(3,2,1)に変わるみたいな?
0255名前は開発中のものです。
2012/05/05(土) 17:57:57.25ID:4Z1053c5ありがとうございます。transform.positionに入れるのと同じですよね?
0256名前は開発中のものです。
2012/05/05(土) 18:13:03.31ID:0geYQKDJ0257名前は開発中のものです。
2012/05/05(土) 18:18:08.06ID:ZLDNkYAd書きなおすの面倒だからいいか
0258名前は開発中のものです。
2012/05/05(土) 18:33:56.40ID:L823ItE1オブジェクト指向的に入出力は直接アクセスしないでそれ使えってのと、可能ならメソッドチェーンできるから、くらいの意味かね。
0259名前は開発中のものです。
2012/05/05(土) 19:52:10.24ID:4Z1053c50260名前は開発中のものです。
2012/05/05(土) 20:11:18.03ID:ZLDNkYAd俺の場合、VC#のフォームデザイナーでEditorとか作るとユーザーコントロール作って何個も置いたりするから、オブジェクト指向っぽくなるけど、
ゲーム作ってると手続型に近くなるんだよなー
何個も似たようなクラス作って継承するくらいなら、最初のクラスを拡張すればいいじゃん?
みたいな気分になる
マップ管理もキャラクター管理も結局一箇所にデータまとめた方が楽に感じるんだよね・・・
敵と味方と村人の違いは配列に属性持たせてメソッドの振り分けで終わっちまう
0261名前は開発中のものです。
2012/05/05(土) 20:44:12.44ID:M8cXfY/Cそんな事は無い
内容次第
0262名前は開発中のものです。
2012/05/05(土) 21:11:16.94ID:4Z1053c5>>261
オブジェクト志向できない俺としてはだな。
拡張を繰り返してる内に、
イチから別クラスを立ち上げた方が良いと判断する時って
わかりやすさとめんどくささによるから
人によるというだけの事なのかな?
と思う。
0263名前は開発中のものです。
2012/05/05(土) 21:21:21.97ID:ZLDNkYAdよければその具体例をくれ
俺の場合、最初にデータ読み込んで、そのデータ通りにキャラを置くから、そこで一緒に管理した方が楽ってなってるのかもしれん
0264名前は開発中のものです。
2012/05/05(土) 21:29:31.00ID:L823ItE1その場限りで同じ処理あるからまとめとけって使い方なら、サブルーチンでも関数化でも同じようなレベルってだけだと思う。
だから、クラスにまとめようが、まとめないでやろうが、そんなに変わりはないってだけじゃないかね。
0265名前は開発中のものです。
2012/05/06(日) 04:45:16.32ID:RPhFyz4yサブルーチンや函数化ってオブジェクト指向とあんまり相性よろしくなくない?
引数を得て操作した結果を返すってのと、オブジェクトに対して操作要求(メソッド呼び出し)って
意味論的にものすごく相性悪いと思うのだけど
0266名前は開発中のものです。
2012/05/06(日) 05:25:43.01ID:pkjhMuV3>実装とか速度はわからんけど、なんでセッターゲッターがあるかというと、
>オブジェクト指向的に入出力は直接アクセスしないでそれ使えってのと、可能ならメソッドチェーンできるから、くらいの意味かね。
C#はプロパティが使えるから、セッターゲッターは過去の産物だろ。
0267名前は開発中のものです。
2012/05/06(日) 05:39:01.51ID:YNtUl0Kbそれ、ただのシンタクスシュガーでしょうが…
持ち主が知らぬ間にメンバの書き換えが起こりうる状態を避けたいとか、入出力の際にその判断や関連する動作を書ける、ってのが要点で、
それがメソッドの形でも、それを隠したプロパティの形でも、
意味する所は同じ。
0268名前は開発中のものです。
2012/05/06(日) 06:08:39.66ID:pkjhMuV3プロパティがあるのにあえてVector3.Setを用意する意味は?
って話じゃ?
0269名前は開発中のものです。
2012/05/06(日) 07:05:45.96ID:nuHwIyae代入のためだけに一時変数作らなくていいからだろ
0270名前は開発中のものです。
2012/05/06(日) 07:12:19.44ID:pkjhMuV3うん、そうだよね。
だから>>258のレスは的外れだよね?
0271名前は開発中のものです。
2012/05/06(日) 08:32:35.50ID:nuHwIyaeまあ確かに>>258は的外れになっちゃってるかも
一般的なセッター・ゲッターについて書きすぎてて
元のVector3.Setについての質問とは少しずれてきた感じ
スクリプトリファレンス見たらSetの返り値がvoidになってたからメソッドチェーンできなさそうだし
でも一般的なセッター・ゲッターについてならあまり間違ってない
0272名前は開発中のものです。
2012/05/06(日) 09:27:38.84ID:w8We8mJf>代入のためだけに一時変数作らなくていいからだろ
float3つ分の一時変数が作られる罠。
Vector3を1つ作るのより遅そうなイメージ。
0273名前は開発中のものです。
2012/05/06(日) 10:35:14.26ID:nuHwIyae最適化かかると同じになるかもしれないとは一応言っておくが
こんな感じと言えばわかるか
Vector3 piyo;
があるとして
piyo.Set(1, 2, 3);
は
piyo.x = 1;piyo.y = 2;piyo.z = 3;
piyo = new Vector3(1, 2, 3);
は
Vector3 temp;
temp.x = 1;temp.y = 2;temp.z = 3;
piyo.x = temp.x;piyo.y = temp.y;piyo.z = temp.z;
書いてるのと同じ
つまりnew Vector3(1, 2, 3);の部分が無駄になる可能性がある
ただし
Vector3 hoge;
がある場合
piyo.Set(hoge.x, hoge.y, hoge.z);
と
piyo = hoge;
はほぼ変わらんだろう
むしろ読みやすいから
piyo = hoge;
の方がいい
0274名前は開発中のものです。
2012/05/06(日) 11:04:35.15ID:5wPGrv4K0275名前は開発中のものです。
2012/05/06(日) 12:42:27.21ID:nuHwIyaeキャッシュのヒット率とか最適化の関係で
実際に使う時のコードで計測した場合と別の結果が出る事があるので注意
あと一時変数が作られる程度の無駄なんて1フレームに数回通る所じゃ気にしなくていい
1フレームに数万回以上呼び出される所だと気にしないと遅くなるけどな
0276名前は開発中のものです。
2012/05/06(日) 12:43:31.29ID:SEqkI7oxまとめてでしかアクセスできないってのは違う。
0277名前は開発中のものです。
2012/05/06(日) 12:54:17.50ID:CgdBpbQWと
piyo = new Vector3(1,2,3);
それぞれ
500万回実行
俺の環境でそれぞれ
69ms
82ms
何度か回したが
大体1.18倍程度かなあ
参考まで。
ちなみに時間計測にはStopwatchクラスを使用。
0278名前は開発中のものです。
2012/05/06(日) 12:57:06.40ID:5y39eaOs0279名前は開発中のものです。
2012/05/06(日) 13:27:59.27ID:YNtUl0Kb見てる人はわかってると思うけど一応書いておくと、
=で結んでコピーって、C#の場合、対象がstructとclassで動作違うから注意な
structがディープコピーで、classはシャローコピー
structでシャローコピーさせたい場合は ref しないとダメ
0280名前は開発中のものです。
2012/05/06(日) 13:44:12.60ID:CgdBpbQWと
piyo.Set(hoge.x,hoge.y,hoge.z);
それぞれ500万回も同様にやってみたがそれぞれ、
24ms
60ms
だった。
ドット三連コストの負けか。
0281名前は開発中のものです。
2012/05/06(日) 14:08:57.49ID:quxC+YZV>>279
0282名前は開発中のものです。
2012/05/06(日) 14:11:56.37ID:nuHwIyaeまだC++の感覚のまま書いててたまに間違えそうになるからな
>>280の結果はhogeの読み出しにコストかかってる感じかね
0283名前は開発中のものです。
2012/05/06(日) 14:37:56.09ID:CgdBpbQW>>277のテストタイムと合わせて考えると、より低レベルで実装されてるであろう構造体のコピーだけってのが単純に速いって感じかも。
0284名前は開発中のものです。
2012/05/06(日) 14:46:27.10ID:MCmxwxtmもうテスト結果も出たし蒸し返す必要ないけど、一応。
>piyo.Set(1, 2, 3);
>は
>piyo.x = 1;piyo.y = 2;piyo.z = 3;
それは参照渡しの場合ね。
Set関数は値渡しだから、
float x = 1;
float y = 2;
float z = 3;
piyo.x = x; piyo.y = y; piyo.z = z;
って事をやってる。
0285名前は開発中のものです。
2012/05/06(日) 15:22:28.54ID:nuHwIyaeの時間が
Vector3 hoge;
hoge.Set(1, 2, 3);
piyo = hoge;
ってやってそうな感じの時間だなぁと思ったり
>>284
まあ引数を渡す機構上そうなるのは知ってるんだが
参照渡しの場合はその表記になるって事は
参照渡し版Set関数が実装できてそっちの方が速いって事?
0286名前は開発中のものです。
2012/05/06(日) 16:39:13.90ID:t1dXxOYS気になるならC#スレいったらいいと思うよ
タコってくれるから
0287名前は開発中のものです。
2012/05/06(日) 17:10:42.61ID:YNtUl0KbC++のイメージで言うと、先にオペレータオーバロードされてないか、
とかが真っ先に浮かぶよな
POD型としてのコピーももちろんそうだけど
■ このスレッドは過去ログ倉庫に格納されています