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

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2016/12/15(木) 10:54:11.55ID:6OvBPhDX
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総合スレッド28 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/gamedev/1468040448/l50

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

●リンク
・Unity(日本公式サイト)
http://unity3d.com/jp
・マニュアル
 http://docs.unity3d.com/ja/current/Manual/index.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質問スレッド27 [無断転載禁止]c2ch.net
http://echo.2ch.net/test/read.cgi/gamedev/1477131311/l50
0300名前は開発中のものです。2017/01/10(火) 20:40:48.35ID:Z6JX6TYo
今の20代や30代前半くらいはコンシューマ開発なんてしたことないのが大半よ
ソシャゲってgree mbgaのことよ?
そもそもゲームすら作ってなかった輩が大量にいるんだから
0301名前は開発中のものです。2017/01/10(火) 20:44:12.61ID:Z6JX6TYo
大半ってのは言い方がおかしかったな
0302名前は開発中のものです。2017/01/10(火) 21:08:03.93ID:4SEzMhKB
ソシャゲで2Dの画像をモニョモニョしかしたことない奴なんざ山ほどいるだろ
0303名前は開発中のものです。2017/01/10(火) 22:20:57.73ID:Lwl2qYNM
元コンシューマって奴はついていけなくなったからソシャゲに堕ちたんだよ
0304名前は開発中のものです。2017/01/10(火) 23:35:11.13ID:dFZlJozT
>>299
dazで出せるモデルでも30万ポリゴンがせいぜい。
ただ、unityの場合は悲しい事に65535ポリゴン以上のモデルは自動的に分割されて(以前はマトモに読めなかったんだけど)ブレンドシェイプが効かなくなる。
なので、必然とキャラクタのモデルは65535ポリゴン未満になる。
っていっても体と顔を離すとかすれば良いのでいくらでも高精細化は可能だけど。
0305名前は開発中のものです。2017/01/12(木) 00:48:42.63ID:Df+pVYd8
ゲーム制作初心者です
大量のアイテムデータを使うようなRPGゲームを作ってるのですが、
膨大なデータを使う場合どうするのが管理しやすいでしょうか
現状アイテムのオブジェクトをすべてプレファブ化し、カテゴリごとにフォルダ
分けしております。
アイテムには、攻撃力、重量、価格などのパラメータ情報を格納できる
スクリプトが入っているのですが、難易度を調整したいときなどは
unityのエディター上から個別にそのプレファブを見つけて修正しなくては
いけないので、管理しづらい状態です。
アセットストアにエクセルや、グーグルスプレッドシートを使うアセットなども
あるようですが、みなさんはこのような場合どうしていますか?
0306名前は開発中のものです。2017/01/12(木) 02:38:42.59ID:uKIzYVVu
>>305
excel管理でcsv出力して起動時にテキストとして読み込むのがサクッとできるシンプルな形じゃないかな
sqlite使ったりjson形式にしたりexcelそのまま読み込んだり色々方法は有るから実装ができそうなのにするといいよ
0307名前は開発中のものです。2017/01/12(木) 13:40:11.97ID:fqcoIEVC
>>305
アイテム毎にプレハブ作ってたらそりゃ大変だろうね

アイテムのタイプ(構造)毎にプレハブを作る
アイテムのデータはcsvでもjsonでもdbでもいいがここにアイテムの毎のタイプ・パラメータ・リソースのパスなどを持つ
インスタンス化する時にタイプを見てプレハブを選択、Instantiate後にパラメータや画像等のリソースをセットって感じでやるかな

現状をあまり変更せずにやるなら、各プレハブのパラメータをcsvでインポート/エクスポートするエディタ拡張を作ってしまうのが早いかもしれない
0308名前は開発中のものです。2017/01/12(木) 15:44:30.85ID:kbAYvVt2
前出はオブジェクト志向。
だが、スケールによっては無駄、ということかな。
0309名前は開発中のものです。2017/01/13(金) 13:19:08.51ID:4ahOpLd0
>>305
アセットを買って対応しています。
0310名前は開発中のものです。2017/01/13(金) 23:29:06.28ID:nw7j0jR+
>>309
嘘乙
0311名前は開発中のものです。2017/01/14(土) 19:42:17.71ID:84Pu6f4f
TextureTypeでTextureやAdvancedが無いのですがどうすれば選べるようになるんでしょうか?
0312名前は開発中のものです。2017/01/14(土) 20:40:10.09ID:4OPyI+cV
重ねての質問すいません
村の人に話しかけるような、衝突判定がある状態でキーボードのEを押すとキャンバスが表示される、というのを作りたいのですが書き方が分かりません
Cも全然わからないので多分条件を2つにするやり方が間違ってます

void OnTriggerEnter(Collider other)
{
if (Input.GetKeyDown(KeyCode.E)&&other.tag == "Player")
GameObject.Find("hanasi").GetComponent<Canvas>().enabled = true;
}

自分なりに考えたのですが表示されませんでした


void OnTriggerEnter(Collider other)
{
if (other.tag == "Player")
GameObject.Find("hanasi").GetComponent<Canvas>().enabled = true;
}

こっちは表示されたので、条件を2つにする書き方が間違ってると思うのですが・・・
0313名前は開発中のものです。2017/01/14(土) 20:45:06.95ID:FQNy+lA5
>>312
if文は間違ってないけど実装する関数が間違ってる

OnTriggerEnter()は衝突が発生した最初のフレームでしか呼び出されない
"衝突判定がある状態"で毎フレーム呼ばれるのは OnTriggerStay()
0314名前は開発中のものです。2017/01/14(土) 20:46:47.03ID:BTT4g8y5
>>312
ontriggerenterが呼ばれた時点でEキーを押下してないからじゃない?
やりたいことはEキーが押下されてる時に衝突してるか?でしょ?
0315名前は開発中のものです。2017/01/14(土) 20:50:25.80ID:4OPyI+cV
>>313
ありがとうございます動きました!
でもなんだかEを連打しないといけない事になってしまいました

>>314
そういう解釈になるのですね・・・難しい
0316名前は開発中のものです。2017/01/14(土) 21:01:35.18ID:E7N00EvS
>>312
input.getkeydownってのはキーを押した瞬間trueを返すから、そのコードだと一瞬しか表示されないんじゃないかな
そしてやりたいのは押している間じゃなくて押したら表示するってことだよね
だから解決策としては、

void OnTriggerEnter(Collider other)
{
if (Input.GetKeyDown(KeyCode.E)&&other.tag == "Player")
GameObject.Find("hanasi").GetComponent<Canvas>().enabled = true;
}
ってやって、
離れた時に
void OnTriggerExit(Collider other)
{
GameObject.Find("hanasi").GetComponent<Canvas>().enabled =false;
}
ってすればいいんじゃないかな
0317名前は開発中のものです。2017/01/14(土) 21:03:42.66ID:E7N00EvS
>>316
OnTriggerEnterじゃなくてOnTriggerStayだわすまん
0318名前は開発中のものです。2017/01/14(土) 21:08:39.40ID:4OPyI+cV
>>316
exitのほうは書いてるの言うの忘れていましたすいません、ちょっとキーボードの判定フレームに難があるものの解決しました、みなさんありがとうございます
0319名前は開発中のものです。2017/01/14(土) 21:20:23.01ID:FQNy+lA5
https://docs.unity3d.com/ja/current/ScriptReference/Input.GetKeyDown.html

Input.GetKeyDown()はUpdate()の中でしか正常な動作を担保されていない。だからこうだね

bool _hanasiStay = false;

void Update()
{
if (_hanasiStay && Input.GetKeyDown(KeyCode.E) )
GameObject.Find("hanasi").GetComponent<Canvas>().enabled = true;
}

void OnTriggerEnter(Collider other)
{
if (other.tag == "Player")
_hanasiStay = true;
}

void OnTriggerExit(Collider other)
{
if (other.tag == "Player")
{
_hanasiStay = false; GameObject.Find("hanasi").GetComponent<Canvas>().enabled = false;
}
}
0320名前は開発中のものです。2017/01/14(土) 21:24:41.29ID:Z3woJLxb
>>312
アセットを買えば良いんじゃない?
0321名前は開発中のものです。2017/01/14(土) 22:43:46.12ID:84Pu6f4f
画像の指定した座標をクリックするとメッセージを表示させたいのですがどうすればいいでしょうか?
0322名前は開発中のものです。2017/01/15(日) 00:59:26.80ID:8cu6tzV1
Unityで作ったゲームを手軽にWebGLでアップロードしてURLなどを用いてTwitterなどで配信できたようですが、(DropboxやGoogleDrive)
今は出来なくなってしまったのでしょうか?
調べてやってみても出来なく、過去レスやサイトを拝見すると今は出来ない…みたいな書かれ方がしたので。
また、もし別の方法がありましたら教えて頂けると幸いです
0323名前は開発中のものです。2017/01/15(日) 02:00:31.25ID:V2I1iOId
webglなら今でもビルドできる
webplayerなら現バージョンでは
できなくなったが
0324名前は開発中のものです。2017/01/15(日) 02:02:18.76ID:V2I1iOId
>>321
マウスクリックしたら
光線を飛ばして
当たった場所のgameobjectが該当画像か
調べる
0325名前は開発中のものです。2017/01/15(日) 05:05:46.42ID:To7L5qVQ
>>324
コリジョン持ったオブジェクトならスクリプトから直接onclickとか呼べるんじゃなかったっけ?
0326名前は開発中のものです。2017/01/15(日) 08:54:38.75ID:RhzqeHNM
>>322
俺は開発中はGoogleCloudStorageに置いてるよ!
試したことなしけどgithubとかunityroomでもできそうよ。手軽かは知らんが
0327名前は開発中のものです。2017/01/15(日) 09:06:30.49ID:jPfsf3KF
>>324 >>325
ありがとうございます!やってみます
0328名前は開発中のものです。2017/01/15(日) 14:24:46.19ID:8cu6tzV1
>>323 >>326
ありがとうございます。参考にして試してみます。
0329名前は開発中のものです。2017/01/15(日) 19:08:48.97ID:qaQLdFVm
すいません、これはC#の質問かもしれないですが(どちらにしろ初学者です)、
いろんなオブジェクトにスクリプトをアタッチさせて、それら複数のスクリプトから、
例えば
Transform manA_T = GameObject.Find("manA").transform;
Transform manB_T = GameObject.Find("manB").transform;
などと参照させたいとします。

今まではそれぞれのスクリプトのclass内に上記を書いていたのですが、
"manA"の名前を変えたいときなど、全部のスクリプトを修正するのは手間です。

参照をするためのスクリプトをひとつ書いて、それぞれからその参照用スクリプトを読み込む方が自然に思えます。
どういう手段が考えられるでしょうか?
0330名前は開発中のものです。2017/01/15(日) 19:27:20.14ID:Apwrr7qg
コロコロ変える可能性があるなら、テーブルスクリプトを用意してテーブル参照型にすれば、テーブルを変えるだけで全部に反映できる。

不具合対応で変える可能性が出てくる等、変更を考えてない所への作り、メンテのし易さ重視なら、汎用スクリプト1つで、多数のオブジェクトに反映、かなぁ。
03313292017/01/15(日) 19:52:06.44ID:qaQLdFVm
>>330
たとえば汎用スクリプトで対応する場合、より基本的な質問で申し訳ないのですが、
汎用スクリプト内の記述を使用しようとしている各スクリプトと同じオブジェクト一つ一つに、汎用スクリプトをアタッチするのが最もスマートでしょうか。
あるいはプロジェクトのAssetsフォルダ内に置いてあるだけの汎用スクリプトを読み込む方法があるのでしょうか。
0332名前は開発中のものです。2017/01/15(日) 20:09:31.61ID:Apwrr7qg
>>331
オブジェクトを、今後多数あるならスクリプト内でアタッチする方法はある。しかし、それがスマートかどうかはあなた次第。
Unity スクリプトの追加で出てくるよ。
0333名前は開発中のものです。2017/01/15(日) 20:12:29.66ID:wvYllQCB
>>329
VSなら全箇所のスクリプトを一斉に書き換えられるリファクタリング機能がある
手間だからって設計を弄るくらいならツールにさせたほうが良い
0334名前は開発中のものです。2017/01/15(日) 21:33:18.38ID:K3Xaubuh
普通に
public transform t1;
とかで変数に持てば良いだけちゃうんか
0335名前は開発中のものです。2017/01/15(日) 21:41:08.85ID:wvYllQCB
>>333
manAって定数か
それじゃリファクタリング効かないや
static readonly stringで一箇所で作っとけば
03363292017/01/16(月) 00:10:06.79ID:Hos4HL0m
教えてもらうほどに、何がやりたいか伝わりにくいというか、前提が曖昧だったことに気付きます。申し訳ないです。
後で値を変更することだけでなく、複数オブジェクトからシンプルに参照したい、ということが重要でした。

>>334-335の指摘を以下にように、自分なりに理解したのがベターに思えました。
ヒエラルキの、とりあえずMain Cameraオブジェクトにreff.csスクリプト(この中のStart(){ }に>>329の二行を記述)をアタッチして、
各オブジェクトのスクリプトから
reff = GameObject.Find("Main Camera").GetComponent<reff>();
と呼び出し、reff.manA_T , reff.manB_T などと使用することにします。ありがとうございます。
(さらにシンプルにできますかね?)

>>332
AddComponent()を知りませんでした。助かります。ありがとうございます。
行数や記述のシンプルさは上記より少なくする方法は思いつきませんでした。
0337名前は開発中のものです。2017/01/18(水) 12:57:03.20ID:DWH55OjO
Cursor.lockStateをNoneにした後にLockまたはConfinedに変更しようとしても変更されない
調べたらUnityのバグみたいなんだがゴミかよ
0338名前は開発中のものです。2017/01/18(水) 16:04:14.92ID:8CUy7GFM
初歩的な質問で申し訳ないんですが
Visual Studio Tools for Unityでjsを読み込むとこのようなエラーがでます
C#はエラーが出ないんですが、なにか設定があるようでしたら教えてください
http://iup.2ch-library.com/i/i1766800-1484722876.png
0339名前は開発中のものです。2017/01/18(水) 21:05:23.13ID:cWBYyibt
';'
0340名前は開発中のものです。2017/01/19(木) 03:31:01.89ID:nN9leuw8
>>338
アセットを買えば治ると思います
0341名前は開発中のものです。2017/01/19(木) 17:33:53.36ID:sewUQBD8
unityで特殊文字を使うには?
使いたい文字自体はDebug.Log("");などで問題なくコンソールで文字化けなく表示されるのですが
UIオブジェクトのテキストなどにその文字を使うと◇の中に?
マークがはいった文字に交換されてしまいます
0342名前は開発中のものです。2017/01/19(木) 18:48:15.01ID:NwN+o466
>>341
フォントにその文字がなくフォールバックに失敗している可能性が高い。
もしそうならば、その文字を持ってる事が確実なフォントを明示的に指定すれば表示されるだろう。
0343名前は開発中のものです。2017/01/20(金) 01:52:13.67ID:YA6iTFQe
canvasのレンダーモードoverlayに設定してるのにその前面にuGUIじゃないオブジェクトが表示されてしまうんですが原因をエスパーしてくれないでしょうか
0344名前は開発中のものです。2017/01/20(金) 09:37:17.07ID:fuiElr4V
>>343
エスパーするにも材料が足りない。
例えば、uGUIじゃないオブジェクトとは何か?(レガシーGUIは前面に描画される)とか、Canvas周りのインスペクターとゲーム画面、ヒエラルキー構造がわかるスクリーンショットなどもっと情報があればあるいは何かわかるかもしれない
0345名前は開発中のものです。2017/01/20(金) 14:08:14.55ID:SGBeovKU
>>341
アセットを買えば良いと思いますよ
0346名前は開発中のものです。2017/01/20(金) 20:10:57.82ID:mLEjz5jf
WebGLでサウンド鳴らないんですけど
どんな感じで設定してますか?

.oggまたは.wavをサーバーに置いて読み込ませると
unity上では鳴るんですけど
サーバー上でいざゲームをするとならないです
0347名前は開発中のものです。2017/01/21(土) 13:27:33.77ID:f/fGW67m
>>346
アセットを買えば良いんじゃない
0348名前は開発中のものです。2017/01/21(土) 13:48:29.73ID:8I6HUa2f
>>346
ブラウザによって再生できるフォーマットが違ったはず
ほぼすべての主要ブラウザで対応しているAACでやってみたら?
0349名前は開発中のものです。2017/01/21(土) 21:11:30.21ID:BT5XypdS
>>347
知ったか乙
0350名前は開発中のものです。2017/01/22(日) 01:34:28.26ID:v+xqtUX/
>>344
情報不足ですみません
フェードアウトで画面全体を覆うパネル使いたかったんですがどうにも上手くいかなくて
フェード用のcanvasを別に用意したら解決しました
0351名前は開発中のものです。2017/01/22(日) 05:33:59.60ID:IWW11uu3
>>348
ダメっぽいですね。サーバーの問題なのかなぁ・・・
0352名前は開発中のものです。2017/01/22(日) 05:38:45.06ID:flpi8xDy
>>351
大前提としてサウンドファイルちゃんとロードできてる?
環境変えてファイルが見つけられないってわりと有ると思うけど
0353名前は開発中のものです。2017/01/22(日) 06:24:24.15ID:IWW11uu3
>>352
index.htmlと同じ場所に音ファイルを置いて
httpからはじまる絶対パスで指定してます

エラーとしては見つけられてないもしくは
ストリーミング再生しようとしてるみたいな
エラーは吐いてるのですが・・・
Streaming of Audio is not supported in WebGL.
Please make sure that the WWW instance has finished
downloading before accessing audioClip data.

Update関数にこっちか
if (AudioSource.clip.loadState == AudioDataLoadState.Loaded)
Audiosource.Play ();

こっちを入れたのですが駄目でした
if (AudioSource.clip.loadState != AudioDataLoadState.Failed)
Audiosource.Play ();

うーーーん・・・なんでだろ
0354名前は開発中のものです。2017/01/22(日) 10:59:51.45ID:p4SmezXU
デリゲートっていうの勉強して使ってみたいんだけど、どういうときに皆さん使ってる?

パスドラみたいなゲームつくるならどう使うと便利??
0355名前は開発中のものです。2017/01/22(日) 11:44:02.03ID:GVig28+m
>>353
知らないけど、サーバーの設定ファイルに、拡張子や、streaming かどうかなど、

プロトコルの種別を指定しなきゃいけないとか?
0356名前は開発中のものです。2017/01/22(日) 11:53:20.01ID:rcQLyY23
>>354
その質問はもう少し delegate について勉強してから なお分からんとこをC#質問スレに投げたほうがいいかもしれん
ゲームのジァンル関係なく、
クラス設計に融通がきくようになるから便利だよ
0357名前は開発中のものです。2017/01/22(日) 13:09:03.70ID:Uw7wi77F
>>354
アセットを買えばデリゲートも簡単だと思います
0358名前は開発中のものです。2017/01/22(日) 17:05:26.49ID:6j3hvh92
デリケートな部分のかゆみに効きますか?
0359名前は開発中のものです。2017/01/22(日) 17:23:37.59ID:p4SmezXU
>>356
デリゲートつかってるソースコードも読んでどう動いてるかもわかってるんですが、なんかややこしくないかなーって思うことが多い…

その人がうまく使えてないのかなあ

>>357
なんのアセットですか?
0360名前は開発中のものです。2017/01/22(日) 17:32:53.28ID:rcQLyY23
>>359
ソースコードを直に読むより、C#の教科書か解説ページを読んで、delegate "移譲" の哲学から抑えたほうが良いよ
分かりにくい単語が続くかもしれんが、
そこ乗り越えばステップアップできる筈
0361名前は開発中のものです。2017/01/22(日) 17:44:01.07ID:iuXTPbX/
>>353
アセットバンドル化してやってみたら?
0362名前は開発中のものです。2017/01/22(日) 17:50:00.62ID:9GlNCBGq
gui系の処理やアセットからの継承とかでdelegateはよく使うかな。
0363名前は開発中のものです。2017/01/23(月) 17:14:30.60ID:EmWqAlc6
Rayを飛ばしてオブジェクトに衝突したら、
衝突したところまでの長さのRayを表示したいんだけど、そういったことってできますか?
0364名前は開発中のものです。2017/01/23(月) 17:19:48.60ID:EmWqAlc6
>>363
すみません、自己解決です。
0365名前は開発中のものです。2017/01/23(月) 21:32:03.85ID:10sBySyr
解決したらその原因と解決方法を書いてくれよw
0366名前は開発中のものです。2017/01/23(月) 22:22:13.89ID:BqV6mX3Z
>>365
せやせや
0367名前は開発中のものです。2017/01/24(火) 00:44:25.75ID:zGEdP3u8
fps用のアニメーションをつくる定石とかってあるんでしょうか?
うまいことエイム時のサイトの点と視界中央をあわせたりとか、
カメラに映るようにアニメーションを調整したりとかめっちゃ大変そうなんですけど
0368名前は開発中のものです。2017/01/24(火) 00:59:07.07ID:jfxQ5WX3
>>367
ゲーム自体を作ってしまい自分でプレイしてレンダリング書き出しアプリでアニメにすれば普通にゲームバランスや配敵調整するだけで済むね!
0369名前は開発中のものです。2017/01/24(火) 02:56:49.86ID:kOkU5fBw
>>367
アセットを買えば調整も簡単ですよ
0370名前は開発中のものです。2017/01/24(火) 08:02:18.27ID:pt/m1Yu4
>>369
無能乙
0371名前は開発中のものです。2017/01/24(火) 08:07:45.06ID:qcskFmZN
>>370
アセットおじさんを馬鹿にするなw
0372名前は開発中のものです。2017/01/24(火) 08:40:05.94ID:pt/m1Yu4
>>371
すまんw
0373名前は開発中のものです。2017/01/26(木) 17:52:20.66ID:Ntr8MfGH
ここ2日ぐらいストアのページだけ繋がらないんだけど
俺の環境だけか知りたい
UnityJapan自体には普通に繋がる
アセおじの呪いか
0374名前は開発中のものです。2017/01/26(木) 17:59:51.74ID:twuEsjD7
>>373

普通に繋がるのだが…
0375名前は開発中のものです。2017/01/26(木) 18:21:49.93ID:Ntr8MfGH
>>374
ありがとう
色々やってみますわ…
0376名前は開発中のものです。2017/01/26(木) 19:16:44.17ID:Xzt/QkYP
毎フレーム10個のstringデータを取得し、stringデータの内容によって処理を分けるというスクリプトを作ってるのですが
毎フレーム行うとなるとパフォーマンスが心配です。
ifやswitchで比較し処理するよりもっと早い比較処理ができる方法がありましたら教えてください
取得する文字データはあらかじめ決まっているものでパターンは20通りのみ、今後増えることはないです
0377名前は開発中のものです。2017/01/26(木) 19:28:48.44ID:CR5wDQFu
>>373
別アカウントでログインしてるんじゃないか?
0378名前は開発中のものです。2017/01/26(木) 20:01:22.13ID:vXygREpd
定数で分岐するならswitchが最速
コンパイル時に最適化されるから何千個case文を書いても速度は変わらない
0379名前は開発中のものです。2017/01/26(木) 20:50:37.64ID:XJhoo/y5
>>376
stringよりintの比較のほうが早いかもなんで既に決まりきったstringを処理するならintとかで管理するようにしたりできないかな?
最適化次第では効果無いかもしれんが
0380名前は開発中のものです。2017/01/26(木) 21:01:11.71ID:X2s0AIJq
>>376
switchは分岐の寡多や順番に処理時間が異存しない
if文は分岐数が多く後方に書かれたケースほど遅い
だが、分岐数が少なくケースの出現頻度が不均一なら出現頻度の高い順に書かれたif文の方が速い
分岐数が20程度ならばおそらくif文の方が速いと思うが、おそらくどっちでやっても体感出来るほどの差は出ないだろう

とまあここまでは前置きとして、そもそも文字列比較自体が遅いので、分岐数が20固定なら文字列渡すのをやめてenum使うとかする方がずっと差が出るぞと
0381名前は開発中のものです。2017/01/26(木) 21:12:28.67ID:4aSMX+Cm
分岐する処理オブジェクトでもラムダでもなんでも良いけどそれを配列でぶっこんといて添字アクセスすれば良いだろ
0382名前は開発中のものです。2017/01/27(金) 00:36:50.02ID:ao+8JS+r
376ですが解答ありがとうございます
たしかに受け取りデータを予めintや配列、enumに交換できればしたいのですが
受けるとるデータは自分で用意してるものではなく、外部APIが出力した物を
取り込んでるため、string以外にするのは難しそうです
ひとまずは2つ以上分岐することもないので、可読性もかねてしばらくは
swichでやってみようと思います
0383名前は開発中のものです。2017/01/27(金) 07:06:12.13ID:GHtU2TVC
いや文字列が決まってるなら辞書作るだけやん
0384名前は開発中のものです。2017/01/27(金) 10:25:25.27ID:jufxBjvI
そもそも外部APIを毎フレーム呼ぶ必要があるの?
毎フレーム呼んで毎フレーム処理するってケースがあんま浮かばないんだけど
0385名前は開発中のものです。2017/01/27(金) 11:32:21.23ID:p/VTbOTf
>>376
アセットを買うのが最適解ですよ
0386名前は開発中のものです。2017/01/27(金) 15:38:40.57ID:e2Qrf22L
マルチタッチをさせずシングルタッチのみ対応させたくて色々調べていたらInput.multiTouchEnabledを見つけました、
しかしmultiTouchEnabledにfalseを代入してもfalseになりません…
代入したすぐ下の行にdebug.logを置いて値を確認してもtrueのままでした、どうすれば良いのでしょうか…
0387名前は開発中のものです。2017/01/27(金) 22:35:46.72ID:UKtJKf35
他のオブジェクトにアタッチしてあるシェーダのプロパティ以外の値、たとえばfixed4の値を取得する方法ってありますか?
オブジェクトを2つ使ってアルファマスクを作りたいのですが…
他に何か方法があれば教えていただきたいです
0388名前は開発中のものです。2017/01/27(金) 23:36:07.15ID:aGknOYIE
uGUIのテキストをスクリプトからの変更したいのですが Convert type 'string'〜 というエラーで出来ないのですがどうすれば治りますか?
0389名前は開発中のものです。2017/01/27(金) 23:48:55.46ID:WG07IevQ
>>386
アセットを買えば解決すると思いますよ
0390名前は開発中のものです。2017/01/28(土) 01:07:55.33ID:jo220eJv
>>388
どんなソースコード書いてどんなエラーが出たのか
省略せずに全て書いてください
0391名前は開発中のものです。2017/01/28(土) 12:10:13.75ID:zrrSZpx+
>>390
public Text test;

void Start (){
test=this.GetCompornent<Text>()
test.text = "ABC";
}
です。"ABC"の下に赤線が出て、
class System.String
Cannot implicitly convert type 'string' to 'UnityEngine.GameObject'
というエラーがでます。
0392名前は開発中のものです。2017/01/28(土) 12:13:56.11ID:DJhaYVPE
>>391
これの
test=this.GetCompornent<Text>()
の最後にセミコロンが付いてないけどそのせいかな?
0393名前は開発中のものです。2017/01/28(土) 12:32:29.97ID:zrrSZpx+
>>392
すいません
セミコロンは書き忘れていました。
プログラム実行時には付けています
0394名前は開発中のものです。2017/01/28(土) 12:40:32.91ID:/aTt0pT9
>>393
uGUI使うって宣言してないんじゃないの?

using UnityEngine.UI;
0395名前は開発中のものです。2017/01/28(土) 13:39:21.22ID:zrrSZpx+
>>394
画像ですいません
コードはこれなのでuGUIの宣言もしていますがエラーがでます。
http://i.imgur.com/MiGGGQZ.jpg
0396名前は開発中のものです。2017/01/28(土) 13:47:04.36ID:DJhaYVPE
>>395
まず
public Text test;
でインスペクタ上でこのtestの中にテキストを入れちゃってるんでしょ?
じゃあ
test=this.GetCompornent<Text>();
ってのは要らないんじゃないかな?
0397名前は開発中のものです。2017/01/28(土) 13:48:42.67ID:DJhaYVPE
ちょっと試しにこの11行目だけコメントアウトして実行してみてよ
おそらくちゃんと実行できると思うんだよ
0398名前は開発中のものです。2017/01/28(土) 13:59:32.45ID:DJhaYVPE
>>396>>397やっぱりこれなし
別に意味ない

>>395のコードで簡単なもの作って見たけど俺の環境では全く問題なく
動いてる
どういう事なのかもうちょっと調べてみる
0399名前は開発中のものです。2017/01/28(土) 14:11:16.46ID:DJhaYVPE
http://i.imgur.com/xHOoUf4.png
似たようなコード書いてまったく問題なく動いてますよ
エラーが出る理由はわかりません
お手上げです
環境によって変わるのかな?
■ このスレッドは過去ログ倉庫に格納されています