トップページgamedev
1002コメント432KB

【3Dゲームエンジン】Unity質問スレッド21 [転載禁止]©5ch.net

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2015/11/18(水) 00:53:16.90ID:6AegDlBR
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
http://peace.2ch.net/test/read.cgi/gamedev/1441891966/

■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
http://www24.atwiki.jp/unity2ch/

●リンク
・Unity(日本公式サイト)
http://unity3d.com/jp
・ユーザーガイド
 http://docs.unity3d.com/ja/current/Manual/UnityManualRestructured.html
・チュートリアル
 http://unity3d.com/jp/learn/tutorials
・スクリプトリファレンス
 http://docs.unity3d.com/ja/current/ScriptReference/index.html
・FAQ
 http://unity3d.com/jp/unity/faq
・MSDN
 http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。

前スレ
【3Dゲームエンジン】Unity質問スレッド20 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/gamedev/1444194744/
0730名前は開発中のものです。2015/12/24(木) 07:47:12.45ID:0vOVQYTb
Androidアプリで文字入力する際に画面全体が縮小されて
Unityデフォルトの青い背景が丸見えになっとる
いつの間にこの仕様になったのか知らんけど、この挙動やめれないかな?
0731名前は開発中のものです。2015/12/24(木) 08:48:36.09ID:8tygBO8v
>>729
再生中のAudioSourceは現在の再生タイムを取れるはずだから、それをUpdateなりで監視してループのタイミングで再生すればいいんじゃない?
0732名前は開発中のものです。2015/12/24(木) 13:12:26.08ID:DmqVAdXz
ユニティちゃんのCRSではanimationイベントを利用してaudio.play()呼び出してタイミング合わせてるね
0733名前は開発中のものです。2015/12/24(木) 14:29:48.87ID:5azEH8wD
PUNのPhotonViewによるオブジェクトの表示を同期するやり方が分かりません
マスタークライアントが置いたオブジェクトを、他のプレイヤーの画面でも表示したいです

オブジェクト(Prefab)を作りのコンポにPhotonViewを追加

オブジェクトのコンポにPhotonTransformを追加

PhotonViewのObserverにPhotonTransformをアタッチ

ルームに入ったあとマスタークライアントか判定してマスタークライアントならオブジェクトをInstantiateしてシーンに置く

上記方法をやってもマスタークライアント意外のプレイヤーの画面に表示されませんでした
間違いがあれば、教えて下さい
0734名前は開発中のものです。2015/12/24(木) 15:12:15.83ID:J+FUoPhB
prefabはresourcesに、みたいなのなかったっけ
エラーとか出てない?
0735名前は開発中のものです。2015/12/24(木) 15:38:51.33ID:6r6456TK
重力をあれやこれや弄りたいとかで
重力処理を自前での実装しなきゃならんとする。

とりあえず通常の重力と同じ挙動をさせたいとき
やり方って以下の方法で問題ないよね?
試した限りでは通常の重力と同じように動いて見えたが、細かい挙動はよくわからん

1. useGravityやgravityScaleを調整して重力の影響を無効化
2. Physics.gravityやPhysics2D.gravityの値(Vector3型/Vector2型)を取ってくる
3. FixedUpdate()の中でAddFoce()する。
0736名前は開発中のものです。2015/12/24(木) 15:40:43.89ID:5azEH8wD
>>734
エラーは出ません
マスタークライアントの画面には正常に表示されます
PUNによる同期しないのであれば何の問題もないです
なので単にPhotonViewによる同期ができてない(手順ミス、やり方が間違っている等)のかと思います
0737名前は開発中のものです。2015/12/24(木) 16:34:10.56ID:V8y/g7ct
>>735
AddForce()するのはいいがForceModeによっては全然違う動きになる事に注意
デフォルトはForceMode.ForceだからForceMode.Accelerationを明示的に指定しないとダメだと思うぞと
07386932015/12/24(木) 19:12:31.14ID:1lQtknuT
>>731
Updateのタイミングだと精度が低くて、
結構ずれずれなので、どうしゆかなーという感じです
0739名前は開発中のものです。2015/12/24(木) 20:19:25.62ID:USbMBm3z
>>738
targetFrameRate の値を上げる、もしくはFixedUpdateの分解能を上げても遅延が気になるならUnityの標準機能だけじゃ難しいかもね
0740名前は開発中のものです。2015/12/24(木) 20:31:55.51ID:3F4M1Qd0
4.6から5への移行です
再生中、rigidbodyのついたGameObjectをSetActive(false)するメソッドが実行されると、
エディタごと落ちます。ログもエラーも出ません。

5のrigidbody関係で、ヒントでも些細なことでも何でもいいので情報くださいませ。
5のrigidbody周りは大量のバグが報告されていて、これもうゲームを作るとか以前の根本的な問題になってきそうなんですけど・・・w
0741名前は開発中のものです。2015/12/24(木) 22:28:33.63ID:V8y/g7ct
>>738
それ多分呼ぶタイミングの問題じゃなくて呼んでから再生されるまでの遅延の問題じゃない?
0742名前は開発中のものです。2015/12/25(金) 01:15:39.54ID:8Iucprok
マウスでクリックした画面上のゲームオブジェクトの座標やらスプライトやらの
情報を取得する方法って
・オブジェクトにButtonコンポをつけてOnClick()を使ってとる
・RayCastでとる

の2つが考えられるとおもうんですが、どっちが良いとか
どういう風に使い分けるべきとか、アドバイスが欲しいです

個人的にはButtonだと色んなオブジェクトにつけて回る必要があるし
付け忘れるとバグるので、RayCastで取る方がいいのかなと考えてますが、正しいですか?
0743名前は開発中のものです。2015/12/25(金) 03:02:56.40ID:zmf0jnn8
>>742
全然違うw
全く理解してないようなので説明しとく
まずRaycastには以下の3種類がありそれぞれ対象が異なるが、対象となるコンポーネントがないと反応しないのはどれも同じ

Physics.Raycast →Collider(3D)
Physics2D.Raycast →Collider2D
EventSystem.RaycastAll →uGUIのGraphic

そしてButton.onClickは全く層が違う、これは連続してRaycastした結果によるコールバックだ
ButtonコンポーネントはuGUIのコンポーネントなのでGraphicRaycasterが継続的にRaycastを行い、その結果クリックされたと評価された場合にUnityEvent型の変数であるButton.onClickのInvoke()がコールされるという流れ
またButtonはステート間のトランジション等の機能なども有していてとても冗長だからボタン以外の用途に使うなw

単純にスクリーン座標にある何かを取りたければ3種のRaycastのいずれかひとつ又は複数を使えばいい

2D/3D/uGUIは完全に分離して考え別々に扱うこと
画面上で重なって見えるのは構わんが同列に扱ったりコンポーネントを混ぜるのは論外

Button.onClickとRaycastと並列に扱う事自体的はずれにも程があるってぐらいおかしいのよ
0744名前は開発中のものです。2015/12/25(金) 05:00:02.85ID:8Iucprok
>>743
ありがとうございます
ButtonのOnClickって内部的にはRayCastを飛ばして評価してるって事ですか?
0745ネットワークエンジニア(プロ)です2015/12/25(金) 08:40:29.64ID:lbZ74yN6
>>733
instantiateはunityのapiじゃなくて、photonのapiを使ってる?
07466932015/12/25(金) 08:52:05.37ID:A95/sZ+u
>>739
>>741

ありがとうございます。
FixedUpdateの周期上げるのは負荷になりそうな気もしますね。

UpdateでPlayするタイミングを上手く指定出来るん?
0747名前は開発中のものです。2015/12/25(金) 09:40:11.41ID:zmf0jnn8
>>744
Canvasに一緒についてるRaycasterコンポーネントを殺してみればわかると思うがタッチ/マウス関係は一切反応しなくなる
これはこいつがRaycastして対象を取得してるからだよ

>>746
どの程度の遅延をズレズレと言ってるか次第だが例えば以下のコードでまずは音のズレを確認する、ここで遅延してても気にしないが聞き取りにくいならここでBの再生開始フレームを調整
次に30→31の様にBの再生タイミングを1フレームずらして書き換えて再度確認、最初の時と比較して再生タイミングに大きなズレを感じられる耳を持ってるなら1フレーム分の遅れが問題
2回の試行で同じようにズレてると感じるなら再生時の遅延の問題と判断できる

void Update(){
if(Time.frameCount==10)
audioA.Play();//比較基準用に鳴らしておく
if(Time.frameCount==30)//30という数字に意味はない
audioB.Play();//これのタイミングをチェック
}

Unityで音ゲー作ってる人なんかはこの再生の遅延の問題には苦労してる人が多いみたいでちょっとググっただけでも対策やらノウハウやら山ほど出てくるぞ
Android実機での遅延問題が大きいのでこの情報が多くなるが日本語の情報だけでも少なくないのでまずはこの辺調べてみるのがいいと思う
0748名前は開発中のものです。2015/12/25(金) 14:59:20.96ID:qIHjPLip
>>737
ありがとう、そういえばそうだった
手打ちだったかわ忘れてた

すげぇ今更だけど
ForceMode2Dの方にAccelerationやVelocityChangeは無いんだな
0749名前は開発中のものです。2015/12/25(金) 17:56:33.86ID:B+X3y53z
どれにもあたってない場合の判定ってどうやればいいんでしょうか
マップチップでマップを作る2Dアクションで、地面との接地判定でジャンプ可否をできるようにしたいんですが

地面を1チップ毎に判定を用意し
キャラクターの足元にisTriggerで接地チェック用の判定を用意しました。
足元判定側からOnTriggerExit2Dを呼び出して離れた瞬間にチェックするようにしてましたが
地面接地したまま横移動した際に、前乗っていたブロックから判定が外れる際にも呼ばれてしまい、接地フラグが一瞬空中判定になってしまいます。

考え方が悪いのか、複数対象に対しての判定チェック方法があるのか、アドバイスお願いします。
0750名前は開発中のものです。2015/12/25(金) 18:18:19.95ID:CtbAOxqw
接地フラグを用意すればいい
接地したらON、ジャンプしたらOFF
0751名前は開発中のものです。2015/12/25(金) 18:25:31.75ID:pherXl+8
>>749
タグ付けといてコリジョンのタグが地面だったら、とかにすればいいんじゃね
0752名前は開発中のものです。2015/12/25(金) 18:28:41.29ID:CtbAOxqw
あ、これだと落ちるとき困るのか
0753名前は開発中のものです。2015/12/25(金) 19:10:58.52ID:CtbAOxqw
下方向に速度があれば落下中と判断するとか
0754名前は開発中のものです。2015/12/25(金) 19:35:12.48ID:pherXl+8
そうか、ブロックってそういうことか。だったらコライダーのリスト作って
EnterしたらAdd,ExitしたらRemoveしてCountがゼロになったらどこにも当たってない、
とかでいいんじゃね
0755名前は開発中のものです。2015/12/25(金) 20:25:54.70ID:cUBPDpkG
>>754
ありがとうございます、接地カウントの方法ならいけそうです、早速試してみます。
0756名前は開発中のものです。2015/12/25(金) 20:35:39.90ID:LAUwLpIR
接地判定だけならリスト持たんでもintでカウントしておけばいいような気がする
0757名前は開発中のものです。2015/12/25(金) 20:50:53.23ID:pherXl+8
単純なカウントで大丈夫そうならそれでもいいし
何かうまくいかないようならContainsで確認してAddすればいいかなと。
リストが長くなるとアレだけど数個程度までならそれほど負荷にもならないだろうし
0758名前は開発中のものです。2015/12/25(金) 21:04:29.26ID:LAUwLpIR
多分だが以下の様な事が発生してるんだと思うんよ

ブロックAからBへ移動する際のboolとintの挙動の違いを処理の発生順を下図1→3の順に追って考えてみる
なお括弧内はbool/intのその時点での値

→123→
┌─┬─┐
│A│B│
1. Aに立ってる(true/1)
2. BにEnterしAB両方に接触(true/2)
3. AからExit(false/1)

この場合boolだと3の位置で次の地面CにEnterが発生するまで空中判定になるがintなら0にはならないから常に接地状態であると判定できる

だからintでいいんでないかなと思う
0759名前は開発中のものです。2015/12/25(金) 21:37:23.33ID:qiT6tQcX
空中かどうかの判定はジャンプや落下(下方向の判定がなくなったとき)にフラグ持たせて、
ジャンプはジャンプ、接地は接地で処理を考えたほうが柔軟でいいんじゃないかな
これならジャンプ中や落下中に横から接したときの挙動もとりやすい
07607402015/12/25(金) 22:05:34.23ID:FiwShDy7
もっとヤバイバグだった
gameObjectの1番使用頻度の高いあるメソッドを特定の呼び出し方をするだけで100%クラッシュする、、、
報告上がってんのに中の人もスルー&沈黙www
一ヶ月たつけどもう開発会社何社か潰れてんじゃねーかな、、、w
0761名前は開発中のものです。2015/12/25(金) 22:36:35.86ID:LAUwLpIR
>>760
質問じゃないなら本スレ行けよw
外部エンジン使ってる以上エンジン側にバグが混入するのなんか折り込み済みなのが普通だし、進行中のプロジェクトで安易にエンジンのバージョンをあげる事はあり得ない
実際仕事では未だ4.6も現役だし5系もバージョン違いで2つ入れてある
バージョン管理使わないというのもあり得ないから5に移行するにしてもブランチ切ってあるだろ

そういう最低限の安全対策も取れない所ならバグがなくても潰れるから安心していいw

勿体ぶった言い方をして煽るのは結構だがその程度で会社が潰れるとか言ってると素人丸出しで全く説得力がなくなるから気をつけた方がいいぞ
07627402015/12/25(金) 22:50:32.61ID:FiwShDy7
わかった気をつけるw
0763名前は開発中のものです。2015/12/25(金) 22:51:19.10ID:UeCgI7Yq
5系4つ入れてるw
Androidのresフォルダが認識しないという壮絶な不具合あったときは胃がおかしくなるかと思ったよ
0764名前は開発中のものです。2015/12/25(金) 22:57:43.03ID:GE3m8j15
今晩は。ちょっと聞きたいのですが
メッシュの動的生成をしていてmesh.colorsに
適当な値をセットしても反映される様子がありません。
もしかしてstandard shaderでは設定しても反映されない?普通は反映される?
初歩的な質問で申し訳ありませんがよろしくお願いします。
0765名前は開発中のものです。2015/12/26(土) 00:48:46.66ID:d/yX6nUB
そのままでは反映されない。
シェーダにちょっと書き足す程度で反映されるようになるよ。
0766名前は開発中のものです。2015/12/26(土) 02:37:11.63ID:DlkIHce8
UnityでC#のコードを書いた場合、どういう仕組みでiOSやAndroidで動いているのですか?

今までどのプラットフォームのmonoもフリーウエアとして公開されていると思い込んでいたため不思議に思っていませんでした
しかし、monoのiOS/Android版にあたるものはフリーで公開されていないと知って驚いています
Uniryは一体どのようにこの有料の壁を乗り越えて動いているのでしょうか?
0767名前は開発中のものです。2015/12/26(土) 03:07:01.64ID:Q61tu/ro
Monoって.NET Frameworkの互換ソフトウェアのほうか
0768名前は開発中のものです。2015/12/26(土) 07:45:40.02ID:iSBjtkxw
ゲームの進行時間を「00:00(時間:分)」のフォーマットで出力したいんですが

// 経過時間を表示
timer_A.text = Mathf.Floor(time_A / 3600f).ToString() + " : " + Mathf.Floor((time_A / 60f) % 60f).ToString();

これだと「0:0」というフォーマットになってしまいます

「00:00」にするにはどうしたらいいでしょうか
0769名前は開発中のものです。2015/12/26(土) 08:34:57.65ID:7/5f2376
>>768
.ToString(
0770名前は開発中のものです。2015/12/26(土) 08:36:54.53ID:7/5f2376
なぜか本文が盛大に削られていた
しかも肝心な部分に入る前に・・・

>>768
ToString("00") で可能です。
0771名前は開発中のものです。2015/12/26(土) 08:52:48.72ID:iSBjtkxw
>>770
ありがとうございます、できました!
そんなオーバーロードがあったなんて知りませんでした
0772名前は開発中のものです。2015/12/26(土) 10:50:15.71ID:raK1t1yt
一人称視点で、ダンボール箱の中から外を覗いているような感じにしたいんですが
ダンボール箱のモデル内にカメラを設置してもダンボールが透けて外が見えてしまうんですが
どうすればいいでしょうか??一人称視点はできているとおもいます。
0773名前は開発中のものです。2015/12/26(土) 11:19:11.61ID:hqMElhSq
>>765
ありがとうございます。
なんとなく難しいなーと避けてたんですが
シェーダーのなかを眺めてみます。
0774名前は開発中のものです。2015/12/26(土) 11:44:01.40ID:d/yX6nUB
>>772
ダンボールの内側のモデルを作る。
もしくはシェーダをダブルサイデッドに書き換える
0775名前は開発中のものです。2015/12/26(土) 12:05:43.85ID:J2t5CeZp
>>766
普通にオープンソースなんじゃない?
Monoが有料という話がどこから出たのか知りたい
0776名前は開発中のものです。2015/12/26(土) 12:39:33.51ID:I9x0dbOD
>>774
ありがとうございます!
シェーダを変えたらできました!
0777名前は開発中のものです。2015/12/26(土) 12:51:11.14ID:DlkIHce8
>>775
確かにMono自体はオープンソースかつフリーで配られています
ただ、iOS向けの変換ツールやAndroid向けのランタイムは(体験版や機能限定版をのぞいて)有料のものしかないように見えてしまいますが・・・・その認識が間違えているのでしょうか
0778名前は開発中のものです。2015/12/26(土) 12:59:10.15ID:d/yX6nUB
その有料の変換ツールを作ったところに変換ツールが作れるなら
Unity内部で同じようなもの作っていても何の不思議もないのではなかろうかw
0779名前は開発中のものです。2015/12/26(土) 14:07:10.95ID:DlkIHce8
不思議じゃないにしても現実にはどうやってるのか気になるな
0780名前は開発中のものです。2015/12/26(土) 14:18:30.39ID:uHnSRUEn
それゲーム開発板のUnityスレッドで聞いて
答えが得られると思ってたりする?
0781名前は開発中のものです。2015/12/26(土) 14:53:32.59ID:d/yX6nUB
実際どういう手法で変換してるかはソースコードでも見るしかないよなぁ
Unityはそこまでは公開してないからどうにもならんが。
でもUE4なら全部公開してるからどういう手法が有り得るのかとかはアレ見ればわかるよ
0782名前は開発中のものです。2015/12/26(土) 15:28:42.44ID:Qa7PpWsr
>>766
最近だとIL2CPPという、名前の通り「monoのILをc++コードに変換する」技術が使われてる
あとは環境ネイティヴでコンパイルするだけ
変換方法の詳細は公開されてないけど、cppになったコード自体はxcode出力したら一応読めるよ。難読化状態だけど
0783名前は開発中のものです。2015/12/26(土) 16:08:33.20ID:f8fQjKcC
5.3になってパーティクルシステム大きく変わったのか
いろんなアセットでエラー吐きまくる
定型的な修正手順とかあったら教えてくれ
5.2.4にしておくのが無難か
0784名前は開発中のものです。2015/12/26(土) 23:06:31.47ID:DlkIHce8
>>782
そういう仕組みだったのですか
ありがとうございます
不思議で仕方ありませんでした
0785名前は開発中のものです。2015/12/26(土) 23:21:29.31ID:JOqtY8Wq
それで納得すんのかよw
IL2CPPはUnity5で採用された技術でそれ以前だってiOS用には出力できたし
Androidの方はどうなるんだとかそのIL2CPPの中身はどうなってんだとか色々あんだろw
名前さえついてりゃ納得するってなんなんだよw
0786名前は開発中のものです。2015/12/27(日) 00:09:58.61ID:YtOJwDdp
気持ちは良くわかるけど、どの段階でスッキリするのかは各々次第ってことだな
0787名前は開発中のものです。2015/12/27(日) 00:21:43.69ID:QK+lQHzY
質問というか相談というか雑談というか
unityの非同期処理調べてみると、ライブラリがいくつかあるみたいなんだけど
みなさん何使ってますか

Spicy Pixel Concurrency Kit
https://www.assetstore.unity3d.com/#!/content/3586

Iterator Tasks is a iterator-based coroutine class library.
https://github.com/aiming/iterator-tasks
説明
http://www.slideshare.net/ppcchan/async-design-with-unity3d
0788名前は開発中のものです。2015/12/27(日) 00:54:30.77ID:CnMTlenQ
設計についての質問なんですがRayCastがヒットしたオブジェクトの種類(タグ名)によって
個別の処理をしたいのですが、メッセージループみたいにまずRayCastがヒットしたオブジェクト種類を
判定するクラスを作って、そのクラスでswitch,case書きまくってオブジェクトのタグ名で判定して
切り分けた先のcase文の中でそれぞれの機能を提供するメソッドをコールするっていう設計は大丈夫でしょうか?
100近いcase文を書くっていうのが設計としておかしいのでは?と不安です
0789名前は開発中のものです。2015/12/27(日) 01:11:18.00ID:V7RdG6Gy
>>788
case文って基本的に上から条件探して降りてくるだけなので
100個もケースあるってことは100番目のケースに至る場合
100回if文を経由するのと同じになる。
たまに使われるものならともかく頻繁に使う処理としてはどうなんだろうな〜という
感じはする。

例えばだがそれに対する処理を定義するスクリプトを貼り付けておいて
ヒットしたらそれをGetComponentして実行する、とかの方が現実的ではないか、って気がする。
単純なものならSendMessageでもいい。
BaseClassで実行する関数を定義しておいて現状タグで判定して分けるその処理は
タイプに応じてオーバーライドする。
共通する処理の部分は小分けにしてBaseClass内でprotectedなりpublicなりで定義しておけばいいし。
0790名前は開発中のものです。2015/12/27(日) 01:30:25.19ID:wK6DIH8G
>>787
解答としてズレてるの承知ながらUniRxは一度試してほしいかな
0791名前は開発中のものです。2015/12/27(日) 01:53:26.74ID:CnMTlenQ
>>789
>例えばだがそれに対する処理を定義するスクリプトを貼り付けておいて
>ヒットしたらそれをGetComponentして実行する、とかの方が現実的ではないか、って気がする。

「ヒットしたらそれをゲトコンして」のあたりの具体的なイメージがよく分からないのですが
どうやってゲトコンするイメージでしょうか?

どの道Rayのヒット判定は必要ですよね?

すみません、ちょっとよく頂いたレスの内容が理解できていません

100近くもswitch,caseを書くのがまずい、(Rayヒット判定するクラスを)分割しろ、という事でしょうか?
0792名前は開発中のものです。2015/12/27(日) 02:00:06.23ID:QK+lQHzY
>>790
どもです
Unity勉強中で、大体材料揃ってきたので
今基幹技術?の選定中というか調査中でして…
UniRxって私の検索ワードでは出てきてなかったのでありがたいです!
0793名前は開発中のものです。2015/12/27(日) 02:18:25.85ID:V7RdG6Gy
>>791
例えばだが
RaycastHit hit;
if (Physics.Raycast(transform.position,transform.foward, out hit,100f)){
BaseClass bs=hit.transform.GetComponent<BaseClass>();
if(bs!=null)bs.MethodA();
}
とかやるってこと。
対象に貼り付けておくスクリプトはBaseClassから派生して自分にあった
MethodA()をオーバーライドしておく。
100もcase文を書くのがまずいかどうかは正直わからんといえばわからん。
ただ100番目のケースに至る場合caseの条件を100回確かめることになるのは確かだ。
それ自体が頻繁に呼び出されることもなく100番目のケースが呼ばれることはめったにない、
ほとんどは10番目くらいまでで終わるというならそれほど悪くはないかもしれない。
ソースがまとめて見れるしそれぞれの処理がそれぞれのスクリプトにばらけてしまうのはいやだ、
というのもわからいではないしね。
他にもやり方は考えられてこれまた例えばだが
case文に入れていた処理を関数化し配列化したDelegateにそれぞれ格納しておいて
RayCastでヒットさせる対象の方には自分のタイプ番号をintで返すメソッドをもつスクリプトを張っておき
RaycastHit hit;
if (Physics.Raycast(transform.position,transform.foward, out hit,100f)){
ReturnNumClass rn=hit.transform.GetComponent<ReturnNumClass>();
if(rn!=null)this.delegateArray[rn.ReturnMyType()]();
}
とかもありえる。まぁ色々やり方はあるってことだ
0794名前は開発中のものです。2015/12/27(日) 02:34:14.82ID:CnMTlenQ
>>793
なるほど・・・なんとなくですが分かりました
ありがとうございました
0795名前は開発中のものです。2015/12/27(日) 03:10:37.82ID:34BqQyRM
>>794
もっとシンプルに文字列がKeyのdictionaryに関数登録して呼び出すのも有りな気もするけどね
0796名前は開発中のものです。2015/12/27(日) 03:17:30.52ID:f6LeTzfn
switchとif文の処理速度についてはリンク先でも見てもらうとして
速度的にどうか以前に100近いswitch casepubなんて読みにくいし修正が発生した時にイラっとすること請け合いだと思うぞと
http://blog.shos.info/archives/2014/08/csharp_ifswitchdictionary.html

Dictionary<string,Action>を持っておくとか、多態性やリフレクションを利用するとかやりようはいくらでもあるが何が適切かは場合によるので自分の設計にどれが合うのかを考える必要があるね
0797名前は開発中のものです。2015/12/27(日) 03:18:07.65ID:f6LeTzfn
なんかゴミが混入してるなすまん
0798名前は開発中のものです。2015/12/27(日) 03:20:45.91ID:f6LeTzfn
Dictionary使うのは実装は楽なんだが、デバッグ時に何が実行されるかを追うのが面倒になるのが難点
0799名前は開発中のものです。2015/12/27(日) 10:43:43.65ID:V7RdG6Gy
else if よりswitchの方が全然高速なのか…
c#のswitchってインデックス化とかで高速にそこに飛んでくれるのかね
0800名前は開発中のものです。2015/12/27(日) 11:11:28.72ID:wK6DIH8G
cでも多量のswitch caseは二分探索に最適化されるんじゃなかったかな
else ifはその都度式を評価しなきゃいけないからそういった最適化の恩恵はない
0801名前は開発中のものです。2015/12/27(日) 12:10:21.54ID:ahWZwfbp
ifは条件自体が自由に書けるから最適化が難しいでしょ
switchは特定の値に対する評価だけだから最適化ができる
難しい話じゃないって
0802名前は開発中のものです。2015/12/27(日) 14:37:50.96ID:epPndMqw
動けばいいんだよHAHAHA
0803名前は開発中のものです。2015/12/27(日) 16:33:39.02ID:B1P4IeWE
switch (true)とかやると速度落ちたりするんだろか
0804名前は開発中のものです。2015/12/27(日) 18:09:47.53ID:Sxb2mTUM
条件分岐のロスが気になるほどシビアな物を作ってるような人がこんな質問はしないと思う
0805名前は開発中のものです。2015/12/27(日) 18:13:04.62ID:ARgWhBYv
そんな心配する前にメッシュ削れよw
0806名前は開発中のものです。2015/12/28(月) 02:38:50.35ID:NstlcfKx
>>803
それコンパイル通るのか?
0807名前は開発中のものです。2015/12/28(月) 04:51:03.33ID:Pj4ZdTwg
>>806
他の言語だとたまにやる
C#で試したこと無いなぁ
0808名前は開発中のものです。2015/12/28(月) 16:12:45.29ID:5m4m0qes
お前らいい加減なこと書きすぎ。
switch文が高速なのはjump tableに置換されるから。
置換できるかどうかはcaseの値次第。
置換できない場合はifとほぼ変わらない。
結果に偏りがある場合はifのほうが早くなる場合だってある。
0809名前は開発中のものです。2015/12/28(月) 16:14:56.75ID:GoZQ8Zcx
何時からここはプログラミング初心者スレになった?
0810名前は開発中のものです。2015/12/28(月) 16:23:07.37ID:KEKC7hz1
おら、ハナクソ共、Unityやろあが!
0811名前は開発中のものです。2015/12/28(月) 17:29:31.48ID:OukfE9ES
unity adsについて質問させてください。
unity adsを導入しようと色々と調べたのですが、zone IDというものがよく分かりません。
zone IDとは何なのでしょうか?
0812名前は開発中のものです。2015/12/28(月) 19:12:01.93ID:DikpkNdf
unity asd zoneid 設定
でグーグル先生にお尋ねしよう
導入してる人が記事書いてる
0813名前は開発中のものです。2015/12/28(月) 19:12:38.17ID:KEKC7hz1
>>811
zoneのIDだよ
クソゲーつくってろクソ
0814名前は開発中のものです。2015/12/28(月) 20:28:49.20ID:YKwRuFXn
unity5.1で作業しています。
アイテムをパッケージにするために、
exportするアイテムを選択し、"export package"にて出力しようとすると、
余計なスクリプトなど大量のアイテムを同胞してしまうのですが、
必要なもののみパッケージ化するにはどうしたらよいのでしょうか?
宜しくお願いいたします。
0815名前は開発中のものです。2015/12/28(月) 20:31:12.67ID:GoZQ8Zcx
これは酷い、export画面に出てる事さえ見えないとは
0816名前は開発中のものです。2015/12/28(月) 22:52:46.70ID:/VhMFQaE
プロジェクトで使われているアセットを全て知りたいんですが、方法ありますか?
画像縮小などしてapkのサイズを減らそうと思ってます
0817名前は開発中のものです。2015/12/28(月) 23:40:27.10ID:/VhMFQaE
>>816
ログ見て自己解決
0818名前は開発中のものです。2015/12/29(火) 01:00:19.32ID:vilgVuqi
Unity adsって確か日本だとクリック先のアプリをインストールされた時のみ収入になるんだっけ?
日本だとってのが広告主を差してんのかデベロッパーを差してんのか忘れたけど
そのシステムで稼げる気がしないわ
0819名前は開発中のものです。2015/12/29(火) 01:16:36.17ID:8MK5m2N1
ほかのアプリで遊んでるときにUnity adsっぽい動画広告何度も見てるけど、
同じような広告しか表示されないんだよなぁ
動画広告だと広告主少ないんかな
0820名前は開発中のものです。2015/12/29(火) 15:01:29.56ID:xC+0y6Z5
カンファレンスでは1000再生あたり900円ぐらいって言ってたような気がするけど・・・・
本当にゲーム中にCMを見てほかのアプリをインストールする奴なんているのかな?
0821名前は開発中のものです。2015/12/29(火) 16:53:16.17ID:MwwfXlWw
アプリのジャンルにもよるんだろうな
放置ゲーやクソゲーだと次を求めて
インストールしそう
0822名前は開発中のものです。2015/12/29(火) 19:53:28.86ID:LD9Kqi6/
BaseInputModuleのProcessって1フレーム内に何度も呼び出されたりすることあるの?
0823名前は開発中のものです。2015/12/30(水) 05:15:37.64ID:fyUMlbjJ
parent
└Image
└Image
└Text
└Text

というオブジェクトをフェードアウトして消去したいんですが、
全てのコンポを取得→取得したコンポをループで一つ一つアルファ値を小さくしつつa=0になったらDestroy
という方法が一番簡単ですか?
正直かなり面倒臭いと思ってしまうんですが・・・
もっと簡単な方法があれば教えて頂きたいです
0824名前は開発中のものです。2015/12/30(水) 05:46:08.12ID:yZjjFJoC
親がcanvasなら親のアルファをいじれば子も一括で透明にならなかったっけ?
0825名前は開発中のものです。2015/12/30(水) 06:04:24.27ID:yZjjFJoC
ごめん、

Canvas
└parent  ←<CanvasGroup>をAdd Component
 └Image
 └Image
 └Text 
 └Text

これでparentのCanvasGroupのアルファをいじれば子まで一括でいけるはず
0826名前は開発中のものです。2015/12/30(水) 06:16:03.79ID:yZjjFJoC
追記
ご存知かもしれないが、parentをDestroyすれば子も一気にDestroy
0827名前は開発中のものです。2015/12/30(水) 06:23:49.90ID:fyUMlbjJ
>>826
消すのはParentを消せば子や孫が消えるのは知っていましたが
CanvasGroupという存在自体を知りませんでした
早速、試してみたいと思います
ありがとうございました!
0828名前は開発中のものです。2015/12/31(木) 15:28:19.78ID:6ePW5QgQ
UnityというかC#の質問かもしれない。

 class Foo : MonoBehaviour
 {
   Bar bar;
 }

上記のようなコードがあり、とあるゲームオブジェクトにアタッチされているとする。
シーン終了時、このゲームオブジェクトは破棄されるが、
次のシーンがロードされる「前」に、確実に bar の終了処理を行いたい。

このとき、どう記述するのがスマート?
Foo.OnDestroy()で bar.~Bar() を呼び出すとか?
0829名前は開発中のものです。2015/12/31(木) 15:48:40.40ID:lR9Sg0TA
>>828
終了処理の内容とはなんぞや?
シーンが変わったらデータのシーンまたぎのなにかテクニックを使わないと
そのデータは破棄されるのだから終了処理の意味なくね?
■ このスレッドは過去ログ倉庫に格納されています