【ゲームエンジン】Unityなんでも質問スレpart15 (383レス)
上下前次1-新
18(1): 11/03(日)09:45 ID:PT+Z5R0i(2/10) AAS
ところで質問なんですが、Unityでゲームの一時停止をする時って皆さんはどう実装してますか?
ググるとTime.timeScale = 0にする記事がヒットするんですが、そういうのは色んな処理に悪影響出るので辞めたいです
やっぱり一つ一つスクリプトでちまちま止める処理を追加するしかないんでしょうか?
19(5): 11/03(日)11:22 ID:etQ2u8I9(1/4) AAS
>>17
でも
Vector3 pos=new Vector3(1,0,0);
pos.x++;
go.transform.position += pos;
というのが正しく
go.transform.position.x++;
は正しくないらしい。
その考えではこれは説明できなくない?
20: 11/03(日)11:38 ID:PT+Z5R0i(3/10) AAS
>>19
xはpublicなフィールド
+=はオーバーロードされてるメソッド
++は純粋にpublicなxをインクリメントするだけ
つまり一時的にコピーされたインスタンスに対して操作(代入とかインクリメント)とかして放置がダメっていう意味だけど分かりますかね?
+=は内部的にメソッド読んでるけど、++はオーバーロードされてないんでpublic xを操作するだけ
>go.transform.position.x++;
これはつまり、
Vector3 pos = go.transform.position;
pos.x++;
省1
21(1): 11/03(日)11:39 ID:69yBOCa6(1/2) AAS
プラスイコールは正しくないやろ
22: 11/03(日)11:49 ID:PT+Z5R0i(4/10) AAS
>>21
やるなら
go.transform.position += new Vector3(1,0,0);
だね
23: 11/03(日)11:55 ID:dogTRd67(1) AAS
公式レファレンス読めとは言わないけど
せめてC#の入門書読んでから開発始めればいいのに、とはこういうやりとり見る度に思うことだ
24: 11/03(日)12:01 ID:PT+Z5R0i(5/10) AAS
一応俺は公式リファレンス読みながら答えてますけどね
外部リンク[html]:docs.unity3d.com
外部リンク:learn.microsoft.com
この辺とか
それが出来る人ならわざわざこのスレで質問しないんじゃないかな?
25(1): 11/03(日)12:08 ID:PT+Z5R0i(6/10) AAS
>>19
とか言いつつ俺もここで質問してたw
こっちは自己解決したのでもういいです
26: 11/03(日)12:08 ID:PT+Z5R0i(7/10) AAS
>>25
まちがった
>>18です
27: 11/03(日)12:18 ID:Ue61tWJP(1) AAS
質問スレいうからさぞかし答えたい人が居るとおもて頑張って質問しとるんやぞ
28: 11/03(日)13:14 ID:eHLtABV7(1) AAS
またお前か
29(1): 19 11/03(日)19:05 ID:etQ2u8I9(2/4) AAS
いえ、わたしがメインで疑問に思ってることは
pos.x++;
これでちゃんと変数posが更新されるの?ということなのですが。
30(1): 11/03(日)20:01 ID:PT+Z5R0i(8/10) AAS
>>29
更新されますよ
さっき試したらちゃんとx座標が1加算されてた
不安なら自分で実行して確かめてみてもらえれば
31(1): 19 11/03(日)20:18 ID:etQ2u8I9(3/4) AAS
>>30
いえ、タワシが疑問に思ってるのは
更新されないはずなのに更新されるのはなぜか、ということなのですが
32: 19 11/03(日)20:20 ID:etQ2u8I9(4/4) AAS
pos.xと書いた時点でこの値用にメモリが確保されてそこには加算されるけど元のpos自体は影響されないはずじゃないの?
33: 11/03(日)20:25 ID:PT+Z5R0i(9/10) AAS
>>31
それはインクリメント演算子の仕様としか言いようがないんじゃないですかね
「更新されないはず」とはどういうことでしょう?
そもそも「何が」更新されないはずなの?
posという変数?
C#の文法的には更新されるので、「更新されないはず」という前提がおかしい気がするけど
34: 11/03(日)20:48 ID:PT+Z5R0i(10/10) AAS
一応補足しておくとtransform.positionはプロパティ、つまり内部的にはgetpos(),setpos()みたいなgetter/setterメソッド実行してるんでフィールドではないですよ
だからtransform.position.x++ができない
だってgetposの戻り値で確保された一時変数に加算して放置という無意味な操作をしてるんだもん
transform.setpos(pos)やって初めてゲームオブジェクトの座標という情報が更新される
この辺がソースなので俺の説明が不安なら読んでみるといいですよ
外部リンク:learn.microsoft.com
35: 11/03(日)21:20 ID:69yBOCa6(2/2) AAS
まぁそのなんだ
やればわかる事よ
論文書くわけじゃないんだし
やれ
36: 11/04(月)00:10 ID:6zzAGIiN(1) AAS
まあ理屈を確かめるのは悪いことじゃない
どうして動いてるのか分からないけど動いてるからいいや、よりは良い
37(1): 11/04(月)00:56 ID:/MIGYpi+(1) AAS
効率いいやり方を模索して作品つくる人と、まず作品ありきで必要あれば最適化する人は話があわないね。前者は研究でどんどん時間が過ぎていくから
プロトは修正改造するからコードが汚くて動けばいい感じで、仕様が決まったら最低限効率なやり方を調べて作りなおすのがいいと思う
上下前次1-新書関写板覧索設栞歴
あと 346 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.010s