- 1 名前:名前は開発中のものです。 [2015/11/18(水) 00:53:16.90 ID:6AegDlBR.net]
- 3Dゲームエンジン「Unity」の質問に優しく答えるスレです。
Windows/Mac用。JavaScript/C#といった汎用言語を使用できるのが特徴です。 フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。 プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他 次スレは>>970を踏んだ方が建てること。ダメなら>>980か>>990が建てて下さい。 ■本スレ 【3Dゲームエンジン】Unity総合スレッド27 [転載禁止](c)2ch.net peace.2ch.net/test/read.cgi/gamedev/1441891966/ ■Unity 2ch Wiki(まとめ、過去ログ、リンク集) www24.atwiki.jp/unity2ch/ ●リンク ・Unity(日本公式サイト) unity3d.com/jp ・ユーザーガイド docs.unity3d.com/ja/current/Manual/UnityManualRestructured.html ・チュートリアル unity3d.com/jp/learn/tutorials ・スクリプトリファレンス docs.unity3d.com/ja/current/ScriptReference/index.html ・FAQ unity3d.com/jp/unity/faq ・MSDN msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。 前スレ 【3Dゲームエンジン】Unity質問スレッド20 [転載禁止]©2ch.net peace.2ch.net/test/read.cgi/gamedev/1444194744/
- 604 名前:名前は開発中のものです。 [2015/12/15(火) 13:40:00.52 ID:o8J25P/W.net]
- >>588
恐らく>>585が言った通りもうひとつ上のブロックにも当たっててそこに 跳ね返ってるのだろう つまり同時に複数のブロックと当たってる そこで一案だがまずボールに当たったブロックをすべてプールする そしてプールしたブロックの中からボールとの位置関係に照らし合わせて適切な あたるブロックを選んでそれを消しながらボールを反射させるというのはどうか
- 605 名前:名前は開発中のものです。 [2015/12/15(火) 13:49:15.86 ID:o8J25P/W.net]
- >>589
やっぱこの方法良くないね 先に上のブロックに当たった場合変な挙動になる 一つのブロックの上辺、下辺、左辺、右辺のどれに当たってるか検知するほうが 良いと思う
- 606 名前:名前は開発中のものです。 [2015/12/15(火) 14:57:28.55 ID:Aeg7fYna.net]
- ブロック崩しの問題って、ブロックとブロックの間に隙間があるから起きてる問題なんだよね?
これって隙間に見えないブロックを詰めてやれば解決するのかな
- 607 名前:名前は開発中のものです。 mailto:sage [2015/12/15(火) 15:53:04.81 ID:1PuSfyAW.net]
- 隙間があるからよりもむしろ計算精度や頻度の問題だろう。
速度を変えると大丈夫な場合があるのだとすれば 物理特性マネージャやタイムマネージャの設定を見直してやれば解決する場合もありうる
- 608 名前:名前は開発中のものです。 mailto:sage [2015/12/15(火) 16:37:29.85 ID:PujoCYBK.net]
- 当たり判定の間隔と処理順の問題やね、図にすると以下の様な感じ縦軸は時間
物理演算(ここでは当たってない) ↓ ↓ここでBに当たるが判定はまだされない ↓ ↓ここでAに当たるがこれはBにめり込んでいる状態 ↓ 物理演算(ABと当たった判定、Aが先に処理されてる) 実行環境の処理能力が許すなら>>592の言う通り判定の頻度を上げればある程度改善すると思う 厳密にやろうとすると同時に当たった場合にちょっと工夫が必要になるかな
- 609 名前:名前は開発中のものです。 mailto:sage [2015/12/15(火) 16:48:56.08 ID:7/E0miQ5.net]
- Edit->ProjectSettings->Time->FixedTimesetp を0.01 (100fps)あたりにすればいいんじゃね
PCなら問題ないでしょ
- 610 名前:名前は開発中のものです。 mailto:sage [2015/12/15(火) 16:56:28.86 ID:PujoCYBK.net]
- Collision Detectionの変更で解消したりしないかねこれ
- 611 名前:584 [2015/12/15(火) 18:46:18.90 ID:dXUWUNx8.net]
- みなさんありがとうございます。
>>594 0.01でマシにはなったんですが、続けているとやっぱりたまに発生します 精度を上げると確率減っていきました >>595 そこらへんいろいろいじったのですが変わりませんでした。 Rigidbody2D版だとよくなったりしました(こっちも出るときは出る)
- 612 名前:名前は開発中のものです。 mailto:sage [2015/12/15(火) 20:00:34.18 ID:X0IxInAK.net]
- 質問です。
Lightwaveでエンベロープとマテリアルを適用しまた、キーフレームでアニメーションをつけたモデルをFBXでunityにインポートし vuForiaを利用してARで表示しようとしているのですが、 ビルドして実機で表示してみるとエンベロープとマテリアルが適用されていません。 Unity上でアニメーションを再生していた時は適用されていました。 理由がわかる方いましたら教えていただけますでしょうか。
- 613 名前:名前は開発中のものです。 mailto:sage [2015/12/15(火) 20:37:30.30 ID:ilr73Fja.net]
- 2Dゲーム制作しています。
SpriteRendererが複数集まってできているアニメーションするキャラクターがいますが、 このrootあたりにスクリプトをつけて一括で色変更ってできますか? 色反転や全体的に明るくするなどです。 無敵状態の表示などに使います。 シェーダーってこういうときに使うのかなと想像してますが・・・
- 614 名前:名前は開発中のものです。 mailto:sage [2015/12/15(火) 20:42:34.04 ID:PX05T8Gm.net]
- >>598
2Dのチュートリアルにまんまな例があった気がする https://github.com/unity3d-jp-tutorials/2d-shooting-game/wiki > 第11回-エネミーのHP、弾の攻撃力、アニメーションの追加 > 11.2 ダメージを受けた時の表現
- 615 名前:名前は開発中のものです。 mailto:sage [2015/12/15(火) 22:20:21.99 ID:7/E0miQ5.net]
- >>598
一括Color操作は自前でコンポーネントを作ったほうが楽だよ 親から一括でやるか、子からrootを見るかは実装次第で
- 616 名前:名前は開発中のものです。 mailto:sage [2015/12/15(火) 22:37:57.21 ID:Pvh48dzj.net]
- 今晩は。毎度お世話になっております。
座標99999たとかでキャラコン貼り付けたcubeがカタカタするんですが そういうものでしょうか。
- 617 名前:585 mailto:sage [2015/12/15(火) 23:19:26.28 ID:tajp4kV9.net]
- やっぱ>585の方法じゃダメだったかー。
それでうまくいくなら一番楽な方法だったのに。残念。 >>584 ブロックを大きくする(ボールを小さくする)ことで、隣のブロックの角に当たる確率を減らすとか、 必ず1マス以上あけてブロックを配置することで、変な方向に反射しても仕方ないとプレイヤーに思わせるとか、 更に姑息な方法はどうだろうか、ダメか。
- 618 名前:名前は開発中のものです。 mailto:sage [2015/12/15(火) 23:39:43.60 ID:1PuSfyAW.net]
- >>601
floatってのは有効桁数が7桁だからあと1で六桁という数になると小数点以下は事実上1桁しか使えない。 座標0.1単位程度でしか動かなくなるってこと。
- 619 名前:名前は開発中のものです。 mailto:sage [2015/12/16(水) 00:03:14.70 ID:j+S5csIr.net]
- uGuiでCanvas以下のレイヤーにマウスの位置に2Dオブジェクト生成しようと思ったのですが
Input.mousePositionで取得した値だと微妙にずれた座標が生成されてしまいます。 左下原点にして右上でタッチするほど座標がずれていくのですが、どうしたら正しい値を取得できるのでしょうか?
- 620 名前:名前は開発中のものです。 mailto:sage [2015/12/16(水) 00:06:03.15 ID:eYf8fnNA.net]
- docs.unity3d.com/ScriptReference/RectTransformUtility.html
割と変換負荷あるからプロファイラーには注意してね
- 621 名前:名前は開発中のものです。 mailto:sage [2015/12/16(水) 00:16:48.31 ID:2EXzHSA/.net]
- >>603
ありがとうございます。 なるほど有効桁数ですか。 本質的な問題のようなので あまり大きな座標にならないように作りたいと思います。
- 622 名前:名前は開発中のものです。 [2015/12/16(水) 00:40:38.94 ID:VAD6hGXi.net]
- Input.GetButtonについての質問なのですが、
例えばオート連射
- 623 名前:フような物を実装しているのですが、
ボタンを押下している状態で、 現在のステージをloadLevelでリロードすると、 ボタンを押しているのにも関わらず、 ボタンを押している事を判定してくれないのですが何故でしょうか (日本語やばかったらすみません) つまり、オート連射のボタンを押しっぱなしにしたまま、 ステージをリロードしても、そのままオート連射していて欲しいのですが、 どうしたら良いでしょうか [] - [ここ壊れてます]
- 624 名前:名前は開発中のものです。 mailto:sage [2015/12/16(水) 02:30:43.20 ID:YpuaDswn.net]
- >>607
どうやって連射の実装してるんだい? フラグでやってるんならSceneが変わったときに連射用のフラグをいったん下ろしてやらなくては。
- 625 名前:名前は開発中のものです。 mailto:sage [2015/12/16(水) 02:37:22.60 ID:f8gP/AkE.net]
- FixedJointでくっつけたゲームオブジェクトが、オブジェクトを動かすとバラバラになって高速で移動しながら飛んでいってしまいます。
RigidbodyのDragなどを高い数値に変更してもその現象は改善されないのですがなぜでしょうか…?
- 626 名前:名前は開発中のものです。 mailto:sage [2015/12/16(水) 09:28:03.07 ID:kqjfOMz3.net]
- ゲームビュー(できれば任意のカメラ)の映像を一時的に静止画にして、
それをゲーム内で再利用する場合、どうやるのがスマートかな? 具体的な状況としては、 たとえばボス撃破の瞬間を切り取って、エンディングで表示させるとか。 楽に使えるなら、ポーズ画面なんかでも使いたいという人も居るかもしれない。 (1)Application.CaptureScreenshotで保存してから読み込む (2)シーンの追加読み込みを行って、シーンをまるごと静止画っぽく表示する (3)各オブジェクトの位置などを何らかの方法で保存しておき、再現する というのをぱっと思いついたが、第4の選択肢は無いものかなって。
- 627 名前:名前は開発中のものです。 mailto:sage [2015/12/16(水) 10:00:36.34 ID:Vb3Sl3S3.net]
- Texture2D.ReadPixelsでスクリーンからテクスチャに直接引っこ抜くという手はある
レンダーテクスチャがPro版でしか使えなかった頃はオフスクリーンレンダリングで割と使われていた手法ではある docs.unity3d.com/jp/current/ScriptReference/Texture2D.ReadPixels.html
- 628 名前:名前は開発中のものです。 mailto:sage [2015/12/16(水) 10:48:18.99 ID:LkcR1T/m.net]
- つか何でRender Texture使わないの?
- 629 名前:607 [2015/12/16(水) 11:31:10.32 ID:VAD6hGXi.net]
- >>608
単純にGetButton("hoge")がtrueなら連射するようにしています
- 630 名前:名前は開発中のものです。 mailto:sage [2015/12/16(水) 11:50:10.30 ID:HZkFOsWS.net]
- 他人が失敗する様な環境を作った自分に非が無いとでも?
- 631 名前:名前は開発中のものです。 [2015/12/16(水) 15:04:03.90 ID:o0yPHZmn.net]
- どなたか教えてください。
シーンが切り替わってから2秒後にBGMを流したく、以下のようなスクリプトを書いたのですが、 再生されません。どこか間違っているのでしょうか? unity5.2.3f1を使っています。 float timer; AudioSource audioSource; void Start () { audioSource = gameObject.GetComponent<AudioSource>(); timer = 0; } void Update () { timer += Time.deltaTime; if (timer > 2.0f) { for(int i =0; i < 1; i++){ audioSource.Play (); } } }
- 632 名前:名前は開発中のものです。 [2015/12/16(水) 15:10:24.68 ID:i1u9PnLV.net]
- >>615
どうもif (timer > 2.0f) {の文で2.0f以降毎フレーム再生開始が掛かってる状態なんじゃないのか? 俺だったらtimerが2.0f超えた時点でフラグをオンにするという構成にする
- 633 名前:名前は開発中のものです。 mailto:sage [2015/12/16(水) 15:15:11.21 ID:Vb3Sl3S3.net]
- >>612
レンダリングを一回余計にまわさなきゃならんのと 個人的にTexture2Dの方が使い勝手がいいからだな レンダーテクスチャでやる場合は以下でおk 任意のカメラ.targetTexture=renderTexture; 任意のカメラ.Render(); 任意のカメラ.targetTexture=null;
- 634 名前:名前は開発中のものです。 mailto:sage [2015/12/16(水) 15:48:31.15 ID:A3RTiMr9.net]
- >>615
>>616の言ってる通りに 再生されないんじゃなくて何回も連続して再生されすぎててまともな音が出てないだけ つかデバッグに仕方をまず覚えろ、playの下にDebug.Log(hoge);とか入れとけば何回も再生されてるのがわかるだろうに
- 635 名前:名前は開発中のものです。 [2015/12/16(水) 16:09:15.66 ID:oULklXcL.net]
- Liicaが出しているアプリ「Q」のようにタッチの軌跡をオブジェクト化して表示し、そこに動的にcolliderをアタッチしたいと考えています。
現在はLine Rendererで線を描画し、タッチされた座標をpolygon collider 2Dのpathに設定しようと考えて作業していましたが、うまくいきません。他になにか適切な方法はないでしょうか?
- 636 名前:名前は開発中のものです。 mailto:sage [2015/12/16(水) 16:53:23.91 ID:Vb3Sl3S3.net]
- >>619
上手く行かない時はどう上手く行かないか書かないとエスパー回答しか出来んよ 推測するにPolygon Collider 2D は閉じたパス(面)である必要があるが、タッチした点は開いたパス(線)だから上手く行かないんだと思うわ タッチした点pの左右に線の太さの1/2だけずらした点p1,p2を算出して、描画された線を囲む様なパスを生成すればいいんでない? まあEdge Collider 2D使うと幸せになれるかもしれない docs.unity3d.com/ja/current/Manual/class-EdgeCollider2D.html docs.unity3d.com/ja/current/Manual/class-PolygonCollider2D.html
- 637 名前:名前は開発中のものです。 [2015/12/16(水) 21:47:00.93 ID:t4TQTjE8.net]
- >>620
ありがとうございます 上手くいかない理由はおっしゃる通りの原因だと思います Edge collider、試してみます
- 638 名前:名前は開発中のものです。 mailto:sage [2015/12/16(水) 21:52:38.12 ID:7BgYgE6R.net]
- >>584
そもそも物理演算必要? 俺だったら進行方向に対して現在地から移動先へのCapsuleCast飛ばして 当たったコライダーとの放線使ってベクトル反転でやるかな
- 639 名前:名前は開発中のものです。 mailto:sage [2015/12/16(水) 22:09:03.18 ID:ndTWa9K3.net]
- 物理いらないならもうパズルゲームみたいにセルを2次元配列化で管理した方が手軽に望んだ挙動作れると思うよ
- 640 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 01:00:33.35 ID:9sQ34Jc8.net]
- unityいじり始めて大抵みんなブロック崩し作ると思うけどブロック崩しって物理演算と
相性良くないよね 当たり判定はエンジンに頼るとしても玉の挙動は自分でコーディングした方がいい
- 641 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 01:54:57.82 ID:NVfT1vq4.net]
- ブロック崩しなら本家の公式にあるこれが一番判りやすいよ
unity3d.com/jp/learn/tutorials/modules/beginner/live-training-archive/creating-a-breakout-game?playlist=17219
- 642 名前:名前は開発中のものです。 [2015/12/17(木) 02:25:48.51 ID:i6ql7oPG.net]
- Unityでenterキーを押すと
GameウィンドウのDisplay 1タブが反応してしまいます。 Displayタブの非表示もしくは反応させないようにする方法は ないのでしょうか?
- 643 名前:名前は開発中のものです。 [2015/12/17(木) 11:39:02.64 ID:42EN6m0T.net]
- 公式の3Dの真似をして以下のコードを書くとエラーになります・・。
どなたかわかる方ご指摘お願いします>< void FixedUpdate(){ float x = Input.GetAxis (
- 644 名前:名前は開発中のものです。 [2015/12/17(木) 11:40:44.32 ID:42EN6m0T.net]
- void FixedUpdate(){
float x = Input.GetAxis ("Horizontal"); float y = Input.GetAxis ("Vertical"); Rigidbody rb = GetComponent<Rigidbody>(); rb.AddForce (Vector2.up * x); }
- 645 名前:名前は開発中のものです。 [2015/12/17(木) 11:43:47.82 ID:42EN6m0T.net]
- 627,628です。
連投申し訳ないです・・・ 正しくはこちらです。 void FixedUpdate(){ float x = Input.GetAxis ("Horizontal"); float y = Input.GetAxis ("Vertical"); Rigidbody2D rb = GetComponent<Rigidbody2D>(); rb.AddForce (x,y); }
- 646 名前:名前は開発中のものです。 [2015/12/17(木) 12:29:43.51 ID:9sQ34Jc8.net]
- >>629
GetComponentってgameobject.GetComponent無しで呼び出せたっけ? 俺はそうしてるけど エラーメッセージも書いてくれよ
- 647 名前:610 mailto:sage [2015/12/17(木) 14:03:48.31 ID:5ZD2RIjV.net]
- >>611>>612>>617
ありがとうございます。 ずっとscreenshotやcaptureといった単語で調べていたため それらのメソッドに辿りつけませんでした。お恥ずかしい。
- 648 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 15:53:38.78 ID:H/PVOEMJ.net]
- >>629
Rigidbody2D.AddForce の引数はVector2とForceModeだから引数の型が違うって言われてるんじゃない? エラーメッセージと公式のリファレンスは読む習慣付けた方がいいよ
- 649 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 16:39:56.32 ID:NVfT1vq4.net]
- >>629
突っ込みどころが多すぎだけど多分こんな感じでうごかしたかったんじゃね その状態ならひたすらチュートリアルやるのが一番の近道だよ public Rigidbody2D rb; void Start() { rb = GetComponent<Rigidbody2D>(); } void FixedUpdate() { float x = Input.GetAxis ("Horizontal"); float y = Input.GetAxis ("Vertical"); rb.velocity = new Vector2 (x,y); // rb.AddForce(new Vector2 (x,y)); }
- 650 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 17:11:46.11 ID:ObBFCLHN.net]
- >>629
その書き方で間違っているのは rb.AddForce (x,y); の部分で rb.AddForce(new Vector2(x,y)); と書かねばならないってだけ。 GetComponentはgameObjectなしでも使える。 GameObjectとComponentはObjectから派生してそれぞれが GetComponentを設けているので両者は本来同じではない(実際には同じだろうが)
- 651 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 17:37:47.81 ID:0OdKeQMj.net]
- 非常に初歩的な質問で申し訳ないのですが、new Vector3(1.1.1)とは毎フレームごとに()の中の値を加算していくということであってるんでしょうか?
- 652 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 17:46:22.58 ID:ObBFCLHN.net]
- >>635
言語の勉強から始めろ… Vector3はUnityEngineで定義された構造体だ。 newはそのクラス、もしくは構造体のインスタンスを作る、ということだ。 インスタンスってのは何かっていうとメモリ上にその形式に沿って領域を確保するってことだ
- 653 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 19:55:08.25 ID:0OdKeQMj.net]
- >>636
すいませんC#の勉強してから出直してきます・・・
- 654 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 20:13:39.37 ID:lGOuvxAK.net]
- >>616、>>618
返事遅くなって申し訳ない Debag.Logしてみたら何度も再生されてたみたいです。616さんの言ってるようにフラグをオンにする形で上手くいきました。 ありがとうございます。
- 655 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 20:19:49.64 ID:H/PVOEMJ.net]
- >>635
なんというか見たまんまなんだけどな new Vector3(1,1,1); ↓ 新しい3次元ベクトルを(1,1,1)で作る C#の絵本あたりでざっくりと概念を理解するのがいいかもね APIの使い方は知らなくてもリファレンス見れば何とかなるが 概念が理解出来てないと応用が効かないしソース読んでも理解出来ないから 効率良く学習するには基本的な概念を理解すること これさえ身についていれば他の言語やゲームエンジンに移っても苦労しない
- 656 名前:607 [2015/12/17(木) 20:46:23.59 ID:/vN0R3NP.net]
- >>613
誰かおねがいしますー
- 657 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 21:11:58.46 ID:0OdKeQMj.net]
- >>639
自分も新しいベクトルを作るって言うのはなんとなくわかるんですけど次のプログラムがいまいち納得いかないんですよね void Update () { var v = new Vector3 (0.1f, 0.1f, 0.1f); transform.Rotate (v); } これだと0.1度の位置でピタッと止まりそうなんですけどオブジェクトがゆっくり回転するんですよね・・・
- 658 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 21:16:51.56 ID:ObBFCLHN.net]
- >>641
それはRotate()っていう「回転させる関数」にその値を渡しているからだ… だから毎フレーム回転する。 transform.rotation.eulerAngles=v; ってやれば0.1度になる
- 659 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 21:58:44.76 ID:0OdKeQMj.net]
- えーっと、つまり毎フレームごとに()の中の値とそれの元になったVector3を破棄(メモリ開放?)するからnew関数を使って毎回作り直すってことですかね?
- 660 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 22:07:57.57 ID:H/PVOEMJ.net]
- >>641
なるほどUpdateが毎フレーム呼ばれる関数だってとこを理解してないんだな void Update () {//毎フレーム var v = new Vector3 (0.1f, 0.1f, 0.1f); transform.Rotate (v);//vだけ回転する } 仮に60FPSで実行されていれば毎秒60回これが実行されるってことだからそりゃ
- 661 名前:あぐるぐる回るだろ
http://docs.unity3d.com/ja/current/ScriptReference/MonoBehaviour.html ここのメッセージの項目の一番下 http://docs.unity3d.com/ja/current/Manual/ExecutionOrder.html ここもざっくり見ておくといい [] - [ここ壊れてます]
- 662 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 22:31:26.52 ID:NVfT1vq4.net]
- まあスクリプトマニュアルにある例文スクリプトを動かしてみるのが一番だな
その例ではvar v = new Vector3 (0.1f, 0.1f, 0.1f); は毎回同じ値しか生まないからUpdateでやる意味はないな あとC#でvarは止めようぜw
- 663 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 22:42:18.10 ID:CLdinnog.net]
- >>641
もうちょっと関数とか定義とか調べてみたほうがいいねw とくに、あれ?と思ったときこそ念入りに
- 664 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 22:43:24.00 ID:0OdKeQMj.net]
- >>644
ありがとうございますマニュアルとか初めて知った・・・ >>645 すいませんネットで見つけたものをコピペしただけだったので・・・ varはバリューの略?だとかってに思ってるんですがC#だと何がいけないんでしょうか?
- 665 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 22:44:58.16 ID:5ZD2RIjV.net]
- ば、value……
- 666 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 22:49:26.89 ID:CLdinnog.net]
- >>645
ちょうどC#スレでも話題になってたけど最近はvarが主流になりつつある(らしい) まあ公式のC#プログラミングガイドで推奨されてたりもするし
- 667 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 22:50:46.47 ID:0OdKeQMj.net]
- やばい恥ずかしさで死にそう
変数とか書いてあるの見て勝手にfloat見たいなもんと勘違いしてたみたいだ・・・
- 668 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 22:51:23.35 ID:CLdinnog.net]
- 訂正
公式のC#プログラミングガイド ↓ MSDNのC#プログラミングガイド
- 669 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 22:57:39.91 ID:CLdinnog.net]
- >>650
変数宣言時に、「代入する値を参照して型を決める」のがvarだから、 「float見たいなもん」という点では間違ってはいないと思う 変数宣言時に代入するのが文字列ならstringとしてコンパイル時に型を決定してくれる
- 670 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 23:09:58.46 ID:H/PVOEMJ.net]
- >>647
C#でvar使うなってのもかなり偏った考え方なので鵜呑みにしない様にw 特に今回のような右辺を見れば誰が見てもVector3だということが明らかな場合はvar使う方がいい 例えば仕様変更でVector3をVector2に変更する場合を考えると 明示的型宣言の場合右辺左辺の両方を変更する必要があるがvarの場合右辺のみの変更で済む 誰が見てもわかる場合には冗長なコードを書くと読みにくさの原因になるからvarでいい 逆に関数の戻り値など型が一見してわからない場合はvarで受けてしまうとその変数の型が何かを理解しにくくなるから明示的型宣言した方がいい var v=getValue(); //型がわからん 数値リテラルなども誤読を生みやすいからvarは避けた方がいい、例えば… var a=3; var b=.3; var c=3f; var d=3l; 上からint,double,float,longだがこうなるともう嫌がらせに近いw あとで読んでわかりにくいコードは無駄な手間を増やすから避けるべきというお話
- 671 名前:名前は開発中のものです。 [2015/12/17(木) 23:22:47.87 ID:42EN6m0T.net]
- 629です。
色々なご指摘ありがとうございます… new Vector2() で動くようになりました! なぜ書かないといけなかったのかを考えたいと思います。 ありがとうございました
- 672 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 23:47:01.98 ID:0OdKeQMj.net]
- つまりvarは機械側が空気読んで変数の変わりをやってくれる
けど>>653見たいに人間には片別が付きにくい場合もあるからそこのへんは気をつけて使えよってことか
- 673 名前:名前は開発中のものです。 mailto:sage [2015/12/17(木) 23:56:05.25 ID:CLdinnog.net]
- 「変数の代わり」じゃなく「変数の型の決定」な
かなり意味違うから気をつけて 自分の中では後者の意味で書いたんだろうけど他の人にとっては別の意味になるよw
- 674 名前:名前は開発中のものです。 mailto:sage [2015/12/18(金) 00:10:10.65 ID:Q3Oo75qC.net]
- みなさん今晩は。
先程からprofilerを眺めているのですが structをKeyにもつジェネリックなdictionaryのtrygetvalueを呼んだ時にdefaultcompareでgc.collectが走ってしまい結構なオーバーヘッドになっています。 これはdictionaryを使う上で避けられないものなんでしょうか? ちなみにstruct側はEqualをオーバーライドして等価判断を実装してます。 unityの質問というよりはc#な気がしますが お願い致します。
- 675 名前:名前は開発中のものです。 [2015/12/18(金) 00:10:40.79 ID:B6RkM70a.net]
- 型推論はコード見てて分かり難いからあんまり好きじゃないなー。
型見てどういう働きさせるか考えるし。
- 676 名前:名前は開発中のものです。 mailto:sage [2015/12/18(金) 00:18:39.03 ID:y4yBucq8.net]
- 代わりと書くなら、「型指定の代わりをやってくれる」かな
これも違和感あるけど
- 677 名前:名前は開発中のものです。 mailto:sage [2015/12/18(金) 09:40:30.69 ID:uooFc2ru.net]
- >>657
GetHashCodeはオーバーライドした? Dictionary<TKey,TValue>の場合キーマッチングにHashCodeを使う 構造体GetHashCodeはobject型のを使う訳だけど値型で明示的な実装がされていない場合これにはボックス化が必要になる キーマッチングが呼ばれるたびにobject型へのボックス化が走るからオーバーヘッドが大きいんだと思う ボックス化せずにキーマッチングが出来るようGetHashCodeをオーバーライドすればかなりパフォーマンスが違って来ると思うよ
- 678 名前:名前は開発中のものです。 [2015/12/18(金) 10:34:13.62 ID:B6RkM70a.net]
- >>607
どなたかわかりませんかね
- 679 名前:名前は開発中のものです。 mailto:sage [2015/12/18(金) 12:09:00.66 ID:Q3Oo75qC.net]
- >>660
ありがとうございます、なるほどボクシングですか。。 gethascodeはオーバーライドしてましたが equalはobject引数のやつでした。 dictionaryのコンストラクターにジェネリックのコンペアラーを作って指定しとけばボクシングなしで比較させられるイメージなんでしょうかね。帰宅したら試してみます。
- 680 名前:名前は開発中のものです。 [2015/12/18(金) 12:11:09.10 ID:gwBKg3dx.net]
- >>658
newなら型が一目瞭然だし、 関数の戻り値で代入なら書いてもいいけど、インテリセンスが効くんだから全く必要ない。
- 681 名前:名前は開発中のものです。 mailto:sage [2015/12/18(金) 12:46:50.67 ID:uooFc2ru.net]
- >>661
答えが貰えないのは答えがわからんからでなく質問がわからんからだからw 要求するエスパーのレベルが高すぎなんだよ 少し問題を切り分ける努力と情報がないとなんとも言えない まずレベルをロードした後にInputからボタンの状態は正しく取れてるのか?取れてないならロード前の値を死なないオブジェクトにキャッシュするなどして回避しろ 次にレベルをロードした際に前のシーンの中身が破棄されて参照が切れてたりしないかチェック レベルがロードされた際に破棄される古いインスタンスを参照していた場合、レベルがロードされた時に参照をとり直さなきゃならん、推測だがここが怪しい エラーを吐いてるのかどうかすらわからん、実装も全くわからんでは答えられんのも仕方ないだろ
- 682 名前:名前は開発中のものです。 mailto:sage [2015/12/18(金) 13:28:08.07 ID:ZJssySOS.net]
- 助けてください!
Unity5.3.0 のMac版をインストールしたところ、UIの文字がつぶれてしまって使えません。 具体的には、 つ ttp://www.dotup.org/uploda/www.dotup.org658569.png 上図のようになってしまったのですが、これを直す方法を知りませんでしょうか? 検索してみましたが、monoDevelopの文字化け対策ばかりヒットしてしまい、解決法が発見できません。 もう、いい加減ハゲそうです… 【環境】 MacOSX 10.9.5 メモリ8GB iMac2010年モデル お願いします
- 683 名前:名前は開発中のものです。 [2015/12/18(金) 15:50:46.63 ID:gwBKg3dx.net]
- unityのフォーラム使え
- 684 名前:名前は開発中のものです。 mailto:sage [2015/12/18(金) 15:54:23.89 ID:LlLoZF5i.net]
- >>665
基本的にUnityにはエディタUIのフォントを選んだりサイズを調整したりという手段はない。 つまりOS側の何らかの設定をそのまま使ってるということ。 MacはよくわからんからよくわからんがMacOS側の何かをいじるしかないだろう
- 685 名前:名前は開発中のものです。 mailto:sage [2015/12/18(金) 17:40:17.08 ID:uooFc2ru.net]
- 中身全く見てないがこんな事してる奴はいるらしい
Unityはエディタの改変は割と自由に出来るのもいいところ https://github.com/anchan828/ChangeEditorFonts
- 686 名前:名前は開発中のものです。 mailto:sage [2015/12/18(金) 19:46:53.46 ID:vovoyLY6.net]
- >>665
とりあえず5.2にしてみたら? それでも変わらなければハード側の問題だろ
- 687 名前:名前は開発中のものです。 mailto:sage [2015/12/18(金) 21:17:02.68 ID:eC4OHSbc.net]
- どなたかAndroid6以上使ってる人いますか?
apkインストールできなく無い?
- 688 名前:661 [2015/12/19(土) 06:18:02.26 ID:YGsi/2ht.net]
- >>664
すすすみません〜 ありがとうございます。試してみます。 Update(){ Debug.log( Input.GetButton("hoge")); } とあった時に、普段はhogeボタン押している間はtrueになりますが、 hogeを押したまま、loadlevelでシーンを読み込むと、 hogeを押したままなのに、falseになってしまうという感じです。 (getButtonは押すという過程が無いと反応しない?)
- 689 名前:名前は開発中のものです。 mailto:sage [2015/12/19(土) 08:35:09.54 ID:3jFWitgF.net]
- >>671
まさに>>664がエスパーした通りだったな
- 690 名前:名前は開発中のものです。 [2015/12/19(土) 14:01:49.13 ID:DxhqkfnX
]
- [ここ壊れてます]
- 691 名前:.net mailto: プログラマはMacを使ってるってマジ?
http://hayabusa3.2ch.net/test/read.cgi/news/1450395043/ [] - [ここ壊れてます]
- 692 名前:名前は開発中のものです。 mailto:sage [2015/12/19(土) 19:16:41.13 ID:BNrflbDt.net]
- 今androidでゲームを作ってるんですが困った状態に直面してます
macのunity上ではなんの問題もなく動作するんですがandroidで動かすと 画像が乱れます m.imgur.com/GvbFeuz.jpg これが普通の状態でパーティクルやオブジェクトを生成すると m.imgur.com/9APIc0N.jpg こうなります 関係無い部分が乱れてるのがおわかりでしょうか? どうしたら乱れないように出来るかわかりますでしょうか? unityは5.3でandroidはnexus9を使っています
- 693 名前:名前は開発中のものです。 mailto:sage [2015/12/19(土) 19:32:53.04 ID:GPbneO/a.net]
- スクショの撮り方からやり直せ
目が痛くなるような画像貼るな
- 694 名前:名前は開発中のものです。 mailto:sage [2015/12/19(土) 19:55:20.13 ID:BNrflbDt.net]
- >>675
申し訳ありません やり直しました m.imgur.com/oTtkUfG.jpg これが正常な画面で m.imgur.com/vByNAi2.jpg これが乱れた画面です 枠の部分がおかしくなってるのがおわかりでしょうか?
- 695 名前:名前は開発中のものです。 mailto:sage [2015/12/19(土) 20:08:40.65 ID:KkGdz7kr.net]
- >>676
ごめん、どこがおかしいのかわかんないけど ピクセルパーフェクトで作ってるから自動的にサイズ調整してくれないってこと?
- 696 名前:名前は開発中のものです。 mailto:sage [2015/12/19(土) 20:39:13.89 ID:BNrflbDt.net]
- >>677
フィールドの上部と左右にスロープ気味の枠を設置してるんですけど下の画像では透けて見えたり 変なところに三角形のポリゴンが出たりしてるんですけどわかりませんか? 動いてる画面だと凄くガチャガチャとした変な感じになります
- 697 名前:名前は開発中のものです。 mailto:sage [2015/12/19(土) 21:54:58.14 ID:esdi3SKN.net]
- >>676
描画されてないポリゴンがあるのは説明されなくてもわかるがこれだけではなんとも判断つかんね 正面の斜面を見る限り面は2つの三角ポリゴンに分割されているが片方の三角だけが描画されてる よく見ると裏目側のポリゴンが描画されてるがこれはスロープがボックス状の面を構成していると想像するなら本来裏向きで描画されないポリゴンのはずだ ここから考えると、何らかの理由でポリゴンの面裏がおかしくなってると推測できるがこの画像からわかるのはここまでだな あと一枚のポリゴンがえらくでかいのはちと気になる
- 698 名前:名前は開発中のものです。 mailto:sage [2015/12/19(土) 22:11:18.50 ID:BNrflbDt.net]
- >>679
ビルトインのブロックを使ってるだけなのでポリゴンのモデルがおかしいとは考えにくいのですが・・ >あと一枚のポリゴンがえらくでかいのはちと気になる さっき試しにブロックを複数に分割して作ってみたのですが結果は同じでした
- 699 名前:名前は開発中のものです。 mailto:sage [2015/12/19(土) 23:16:47.00 ID:BNrflbDt.net]
- 自己解決しましたー
パーティクルを表示させる時scaleをいじってたのが悪かったみたいです scaleをいじるのをやめたら正常に表示されました
- 700 名前:名前は開発中のものです。 mailto:sage [2015/12/20(日) 16:55:49.34 ID:kKby6yTS.net]
- Prefabsについて質問
Prefab化した時にスクリプトでpublic 変数で指定したものが一部noneになってインスタンス化してもnoneのままなのですが これはどういう規則があるんでしょうか? 例えばチュートリアルのsuvival shooterでplayerをPrebabにするとPlayerHealthのHealth SliderとDamage Image がnoneになります audioclipのDeath Clipは指定されたのが残っています Prefabに直接Health SliderとDamage Imageを指定しようとしても侵入禁止マークが出てできません こういった場合は一般的にどうやって指定するのがいいんでしょうか?
- 701 名前:名前は開発中のものです。 mailto:sage [2015/12/20(日) 18:35:21.92 ID:oUuZ6MJB.net]
- >>682
いつも通りチュートリアル見ずにエスパーするが Prefabはヒエラルキーに存在しないからヒエラルキーにあるインスタンスはPrefabでは保持出来ない、アセットにあるものの参照は維持される ヒエラルキーにあるものを参照したければInstantinateした後でスクリプトで参照をセットするといい
- 702 名前:名前は開発中のものです。 mailto:sage [2015/12/20(日) 19:02:45.82 ID:kKby6yTS.net]
- 早速ありがとうございました
やっぱりスクリプトでやるのが普通なんですね 安易にヒエラルヒーにある他のGameObjectをPublicで参照するのは止めたほうがいいのかな とりあえずFindかFindWithTagで地道に参照します
- 703 名前:名前は開発中のものです。 [2015/12/20(日) 21:43:31.06 ID:sxkN/Mdb.net]
- 時代遅れ感が半端じゃない質問ですが・・・・
今Photon使って複数人対戦のアクションゲームを作成してまして、 カメラの描画範囲外はポジションの同期せず、範囲内に入ったら同期みたいなことをしようとしてはいるんですけど、 OnWillRenderObjectでカメラの範囲を見るのはわかるのですが同期するしないの設定ってスクリプトから変更することって可能なんでしょうか? 調べてみてもそういう記述が見つからなかったので・・・ ちなみにUnityのバージョンは5.0.4です (他の方法がありましたらご指南いただければ幸いです m(_ _)m)
- 704 名前:名前は開発中のものです。 mailto:sage [2015/12/20(日) 22:06:52.53 ID:Sx2eIhW1.net]
- unity5.3を32bitVistaで起動させる方法ってないですかね?
|

|