unityでのAndroidバックボタンの挙動

投稿者: Anonymous ・意図する動作 バックボタンを押したときに・・・  ポップアップがあれば、それを消す  なければアプリを終了 ・実際の動作 バックボタンを押すと、ポップアップの有無に関わらず、アプリ終了 テストの為、ボタンクリックでの処理も行いました(ボタンを押したときに同様の処理をする) このボタン動作の場合には意図通りに動きます。 ですが、バックボタンの処理を Update() 内で書いたときには意図通りに動きません。 予想:バックボタンは1クリックしかしていないのに、クリックを何回もしているような処理になっている気がする。Update() のせい? ドコがおかしいのでしょうか。 以下ソース テスト用ボタンクリック public void Onclick () { if(MyCanvas.IsActive (“ScrollController”)){//アクティブなら Debug.Log(“ScrollController”); MyCanvas.SetActive (“ScrollController”, false);//非アクティブにする }else if(MyCanvas.IsActive (“ScrollController2”)){//アクティブなら Debug.Log(“ScrollController2”); MyCanvas.SetActive (“ScrollController2”, false);//非アクティブに }else if(MyCanvas.IsActive (“AboutPanel”)){//アクティブなら Debug.Log(“AboutPanel”); MyCanvas.SetActive (“AboutPanel”, false);//非アクティブに }else{ Debug.Log(“Quit”); Application.Quit(); } } 実際のバックボタン用コード void Update () { if (Application.platform == RuntimePlatform.Android)…(Continue Reading)

Unityでのstatic変数とメソッドの挙動について

投稿者: Anonymous Unity初心者です。 Unity上でstatic変数を複数のオブジェクトで使用した場合の挙動についてわからなかったため、教えてください。 public class MyClass : Monobehaviour{ private static MyClass myClass; private void Greeting(){ Debug.Log(“Hello”); } } というプログラムがあり、幾つかのオブジェクトにアタッチされている場合、 1. myClassはすべてのオブジェクト間で共通の変数となっているのでしょうか 2. Greetingはどれかのオブジェクト内で呼び出されたとき、すべてのオブジェクトで実行されるのか 以上の2点がどうなのかわかりません。 自分で実行してみましたが、1番は共通になっているようでした。 2番は、上と同じであれば共通になっているため、すべてのオブジェクトで実行されると思っていたのですが、そうではありませんでした。 しかし、確信が持てなかったため、質問させていただきました。 Unityに詳しい方、ご回答をよろしくお願いします。 解決 myClassはすべてのオブジェクト間で共通の変数となっているのでしょうか はい、共通の変数となっています。 今回の場合、myClassという変数は共通で、myClassの実体は1つのみとなっていますが、MyClassのインスタンス自体は複数生成することが可能です。 例えばMyClassコンポーネントを複数のGameObjectにアタッチした場合、アタッチした数だけMyClassのインスタンスは生成されます。 しかし、どれだけ多くのインスタンスが生成されたとしても、myClassの変数に設定できるのは1つのインスタンスのみとなります。 Greetingはどれかのオブジェクト内で呼び出されたとき、すべてのオブジェクトで実行されるのか いいえ、全てのオブジェクトでは実行されません。呼び出されたオブジェクトに対してのみ実行されます。 全てのオブジェクトは変数を共有しているのみであり、メソッド呼び出しの伝搬などは発生しません。 全てのオブジェクトからmyClassにアクセス可能なだけです。 回答者: Anonymous

Unity:AndroidAPKに書き出すとアニメーションしない

投稿者: Anonymous Unityにおいて、 MMD4Mecanimを使用し変換したモデルで、 Android に書き出すとアニメーションしません。 unity上のプレビューでは動きます。 またアニメーション以外のプログラムは動いています Unityのバージョンは5.2 MMD4Mecanim 20150821 試した事 ・MMD4Mecanimを使わず、AndroidAPKにする→アニメーションする ・Unityのバージョンを4.6まで落としてみる→アニメーションしない ・PCへの書き出し→アニメーションする 解決 MMD4Mecanim が新しいバージョンよりモバイル書き出しに対応していないためでした 過去のバージョンではモバイル書き出しに対応していたため、ネット上では「これでできる」という解説が行われたままのものが存在します。 回答者: Anonymous

Diccionario de lista dinámica c#

publicado por: Anonymous Antes de nada estoy programando para Unity3D, este por ejemplo no permite implementar tipos dinámico (dynamic) Estoy intentando hacer un diccionario que alberga un string y una lista ( que está; quiero que sea dinámica ). Todo va bien hasta que intento coger la lista de un determinado índice del diccionario; pero…(Continue Reading)

型が不定のクラスインスタンスを共通クラスに持つ方法がわかりません

投稿者: Anonymous 各API用のデータクラスが複数あり、 各クラスのデータをAPI送受信のManagerクラスに渡したいのですが、 どのようにすれば良いのかがわかりません。 下記のように仮のデータクラスとしてTestAとTestBを作り、 APIManager内にどちらのインスタンスが来てもセットできる変数を作成したいです。 ●testAクラス using UnityEngine; using System.Collections; public class TestA{ int val1; int val2; int val3; } ●testBクラス using UnityEngine; using System.Collections; public class TestB { int val1; long val2; string valstr; } ●ApiManagerクラス(シングルトン) using UnityEngine; using System; using System.Collections; using System.Collections.Generic; public sealed class ApiManager { —————–追記—————– private APICommunicationThread…(Continue Reading)

Error CS1061 ‘Mesh’ does not contain a definition for ‘GetTriangleStrip’

publicado por: Anonymous Hola al actualizar mi código de Unity 3.4 a Unity 5.3 me muestra el siguiente error: Error CS1061 ‘Mesh’ does not contain a definition for ‘GetTriangleStrip’ and no extension method ‘GetTriangleStrip’ accepting a first argument of type ‘Mesh’ could be found (are you missing a using directive or an assembly reference?) El…(Continue Reading)

Unityで発音遅延を解決方法

投稿者: Anonymous 初めて質問させていただきます。Unity初心者です。 円形ボタンを押すと色が切り替わって音が出るサンプルを作成しましたが、SEを再生する時に遅延が出てきました。 サウンドファイルのImport Settings > Load type はLoad into memoryにし、 Project Settings > Audio > DSPBuffer Size はBest latencyにしました 以下がその処理です。 using UnityEngine; using System.Collections; public class TouchTest : MonoBehaviour { AudioSource SoundMaterial; void Start() { } void OnMouseDown() { GetComponent<AudioSource>().Play (); GetComponent<Renderer>().material.color = Color.red; } void OnMouseUp() { GetComponent<Renderer>().material.color = Color.gray; } void…(Continue Reading)

Unityで2Dキャラクタをクリックした場所へ移動、対応したSpriteを表示させるには?

投稿者: Anonymous どうも、皆様お世話になっております。 下記の仕様を実現させるために、仕様2の箇所を下のコードで実装してみたのですが、 仕様3の「移動方向に合わせて」の箇所で実装方法に詰まってしまいました。 【仕様】 2Dキャラクタで八方向のSpriteを持つ マウスクリック(またはタップ)でクリックした場所にキャラクタが移動する 移動方向に合わせてSpriteを切り替える 【実装コード】 //移動速度 public float speed = 2; Vector2 vec; void Update () { //移動処理 if(Input.GetMouseButtonDown(0)){ vec=Camera.main.ScreenToWorldPoint(Input.mousePosition); //Debug.Log(“x=”+vec.x+” y=”+vec.y); } transform.position = Vector2.MoveTowards(transform.position, new Vector2(vec.x,vec.y), speed * Time.deltaTime); } こちらに関して良いアイディアは御座いませんでしょうか?お知恵を拝借したく存じます。 解決 必要になるのはVector2の演算とMecanimをつかったアニメーションの切り替えです。 どちらも公式のチュートリアルに出てきますので確認してみてください。 http://japan.unity3d.com/developer/document/tutorial/2d-shooting-game/game/02.html 2つのVector2を引き算した値を取得したXとYのそれぞれが一定の値以上か以下かの組み合わせで8方向の判定を得られます。参考までに4方向の例を挙げます。チュートリアルのようにnormalizeするのもよいでしょう。 //移動速度 public float speed = 2; Vector2 vec; void Update () {…(Continue Reading)

文字列の中から区切り文字で仕切って特定の要素を取り出したい

投稿者: Anonymous C#で以下のような文字列があるとします。 test1#2.00,2.00,4.07,sample1:sample2|test2#3.04,-2.59,4.07,tttt1:t2t2|testest#3.04,-2.59,4.07,tatata:chichichi シャープの後のカンマで区切られた4つめの要素のみを抜き出して結合し、以下のような1つの文字列にしたいです。 sample1:sample2,tttt1:t2t2,tatata:chichichi, 以下のようなプログラムを書いて同じ出力を得られたのですが、 var combineStr = “”; var strArray = “test1#2.00,2.00,4.07,sample1:sample2|test2#3.04,-2.59,4.07,tttt1:t2t2|testest#3.04,-2.59,4.07,tatata:chichichi”; foreach (string message in strArray.ToString().Split(new Char[] { ‘|’ })) { var strArray1 = message.Split(new Char[] { ‘#’ }); var commaList = strArray1[1].Split(new Char[] { ‘,’ }); combineStr += commaList[3]; combineStr += “,”; } System.Console.WriteLine(combineStr); もうちょっと簡単に短く書く方法はないでしょうか? 実際には sample1:sample2,tttt1:t2t2,tatata:chichichi のように最後のカンマをなくした状態で出力できるとより嬉しいです。 .NET Framework…(Continue Reading)

Kickstarter支援者向けに、サーバーを使わずアプリの限定アイテムを配布することは可能でしょうか?

投稿者: Anonymous Kickstarter支援者に、特別アイテムをプレゼントしたいのですが Androidアプリ、(Unity3d制作)で サーバーを立ててユーザー認証をする方法ではなく、 アプリ単体でどの支援者か判別する方法はあるでしょうか? 支援者に特別アイテム用のパスワードをメールで送る などは考えたのですが、 それだとパスワードをTwitterなどでつぶやかれたり、 攻略サイトに張られたりなどされる可能性もあり スマートな方法ではないと考えます。 サーバー立てないのは、単に僕がサーバー触ったことないだけなので 他に方法がなければそのままパスワード制にするか この機会にサーバーの勉強を始めようかと思うのですが。 解決 サーバーを使わない -> アプリ内に配布したいアイテム情報がある -> 逆アセンブルをすれば(時間が多少かかるかもですが)その情報は見つかる となるので、サーバーで何らかの認証の仕組みが必要になると思います。 最近は自分でサーバーを構築せずに使えるサービス(MBaaS)があるので、それを利用するのがてっとり早い気がします。 http://jp-cloud.kii.com/ http://www.appiaries.com/jp/baas/ http://mb.cloud.nifty.com/about.htm 回答者: Anonymous

Unityで大きなゲームオブジェクトを描画した際の描画速度の低下について

投稿者: Anonymous Unityでアプリを開発している際に気になったので質問させてください。 シーン上での描画がカクカクしたり、低スペック端末での処理が重たくなる際のチェックポイントとしてDrawCallの回数がありますが、例えば現在シーン上で複数の画像(ゲームオブジェクト)で画面を構成している場合、不動のものに関しては一枚の背景画像(ゲームオブジェクト)にまとめてしまったほうが処理は軽くなるかと思います。 しかし、例えばその画像のサイズが大きい場合は一つしか描画しなかった場合でもシーンの描画速度に影響があるのでしょうか。 例えば、チャリ走のようなゲームを作る場合にステージを横長にした場合、横に多きサイズの画像を一つ描画し、カメラを移動するオブジェクトに合わせて移動させて、ステージを動いているようなゲームを考えており、ステージをStart時に生成しておくという場合を想定しております。 宜しくお願い致します。 解決 一般に、1枚であってもあまりに大きな画像を取り扱うと、描画速度に影響があると考えられます。メイン/VRAMともにメモリ使用量が極端に大きくなると予測されるので、それにともなう問題も想定されます。 1度に描画する範囲にあわせて分割して、表示範囲にあわせて随時ロード(表示・非常時)するといった対策をオススメしておきます。 回答者: Anonymous

unity プレハブからボタンを動的に生成したい

投稿者: Anonymous 環境 unity 4.6 行いたいことは、プレハブ化したボタンを使用し、リストビューの中にボタンを複数自動生成したい。 下記ソースを実行しても unity ではエラー表示はありませんが、ボタンが生成されていません。 階層は次の通り Canvas -ScrollController –Content —button —button  (中略) —button ソース https://gist.github.com/anonymous/10de0cd126923242a571 解決 テストシーンを作成してみたらソースコードそのままで問題なく動作しました。ボタンが4つ生成されてラベルが「TTTT」に変更されたのを確認。スクリプト QuizMgr.cs は、「ScrollController」に AddComponentして試しました。 エラーが出てないとのことなので問題はないと思いますが念のため。 ボタンの Prefabファイルは現状のソースコードでは Resources.Load でロードされてるので、下記のようにフォルダ構成してファイルを置く必要があります。 Resources/Prefabs/AnsButton.prefab ボタンが実は生成されていて非アクティブ(非表示)だったという可能性も疑いましたが、「ボタンが生成されていません」ということなので、Prefab自体に問題があるかと思います。いま一度、新規 Buttonを生成して Prefab作成して試してみてはどうでしょうか。 回答者: Anonymous

DLLを外部から呼び出し可能なように構成したい

投稿者: Anonymous VisualStudioでTestという名前でプロジェクトを作成し,dlltest.cppとdlltest.hに下記のように書き込み,x64,Releaseでビルドし,作成されたTest.dllというファイルをunityプロジェクトのAssets/Pluginsにコピーしました.unityでシーン上に空のオブジェクトを作成し,そこに下記に示すDllという名前のスクリプトを入れ実行すると, EntryPointNotFoundException: Return Dll.Start () (at Assets/Dll.cs:13) とエラーが出てしまいます. 自分では何が原因なのか皆目見当がつきません.解決策が分かる方がおりましたら教えてください. ちなみに使用しているのはVisualStudio2017,unity2017 3.0f3 Personal(64bit) です. dlltest.cpp #include”dlltest.h” int Return() { return 10; } dlltest.h #pragma once extern “C” { int Return(); } Dll using UnityEngine; using System.Runtime.InteropServices; using System; public class Dll : MonoBehaviour { [DllImport(“Test”)] private static extern int Return(); // Use this for…(Continue Reading)

¿ Cómo se puede hacer para obligar a mis usuarios a actualizar mi App de android?

publicado por: Anonymous Tengo una aplicación hecha con Unity pero me ha salido un gran bug y la tienen algunas personas y no quiero que la utilicen más por lo que me gustaría hacer que cuando abriesen mi App les saliese un cartel diciéndoles que deben actulizarla del google play para poder seguir utilizándola. Mi…(Continue Reading)

GameObject上にカウントダウンテキスト表示するには

投稿者: Anonymous 初めまして。 私はUnityで、 移動するゲームオブジェクト上に カウントダウンテキストを表示させたいと思っているのですがどのように実現すれば良いでしょうか? Unityのバージョンは4.6なので、新規のUIを使用するのかとも思ったのですが上手くいかず。。 アドバイスいただければと思います。 ※ジャンルは2Dゲームになります。 解決 Unity4.6でも旧3DTextは使えますが、Createの選択には現れなくなっています。 カウントダウンテキストはCanvasの下に配置して表示するのには考慮が必要そうですし、今の時点では旧3DTextを使うのが早いと思います。 使うには空のGameObjectを作るなどして、Add ComponentからTextMeshコンポーネントを追加してください。 回答者: Anonymous

Unity5のアセットバンドル作成とロード

投稿者: Anonymous 下記手順でアセットバンドルを作成したのですが、 CreateFormFileを使用してLoadする方法がわかりません。 ●アセットバンドル作成側 1.新しくシーンを作成しCameraの下にCanvasを作り、Canvasの下にButtonを作成しました。 2.Canvas以下をプレハブとし、そのPrefabにInspector上でAssetBandleの名前をtestcanvas  としました。 3. BuildPipeline.BuildAssetBundles(“Assets/BundleOutPut/”);  メソッドにてアセットバンドルを作成し、  Assets/BundleOutPut/ の下に下記4つのファイルができました。  BundleOutPut  BundleOutPut.manifest  testcanvas  testcanvas.manifest ●アセットバンドルロード側 作成したBundleOutPutをAssetsの下のStreamingAssetsに置き 下記のソースでロードしてみたのですがエラーメッセージが表示されます。 public void CreateFileAssetBundleFileLoad() { string path = “file://” + Application.streamingAssetsPath + “/” + “BundleOutPut”; AssetBundle NoCompress = AssetBundle.CreateFromFile(path); Instantiate(NoCompress.mainAsset); } エラーメッセージ:Error while reading AssetBundle header! エラーメッセージ:NullReferenceException: Object reference not set to an instance of an…(Continue Reading)

変数名 漢字と仮名の字は大丈夫?

投稿者: Anonymous 私は日本のゲーム開発元で働いています。 これから社員にunityの講座を行います。 monodevelopで変数に漢字・かなの名をつけるとinspectorで無事に表示されますが、 そうするとバグや不具合が発生する場合があるかと聞きたいと思います。 解決 漢字の識別子の是非の議論は置いておき、割りきってつかう場合に注意する点として、”+“や”-“、”?“、”、“、”0“などがASCII文字ではないから使うというのはやめておくべきです。 大抵のツールでは、Unicode の正規表現でソースをパースするため、これらの文字がASCII文字の”+“や”-“、”?“、”,“、”0“などと同じ意味として解釈するケースが多数あります。 monodevelop の環境ではありませんが、VisualStudio などでも、いくつかの文字がソースに存在するだけでフリーズすることがありました。 割りきって漢字を使うのであれば、記号は避けて純粋な「かな漢字」のみに留めておくべきです。 回答者: Anonymous

Unityウィンドウの色の変更について

投稿者: Anonymous Unityのデフォルト状態ではウィンドウの色は灰色になっています。 しかし、この前unityのチュートリアル動画で、黒っぽい色に変更して いるのをみました。プレイモード時の色を変更するのは、 Preferencesから設定することを知っていますが、 ウィンドウの色を変更するにはどうするのでしょうか? 回答よろしくお願いします。 解決 残念ながら、UnityのPreferencesの設定で少し色を変更することが出来るのに、ウインドウの色などを変更することにはUnityプロ・エディションが必要だと思います。私のUnityのバージョン(4.3.2)はちょっと古いのに、設定で、「ダーク・スキン」のそばで「Pro Only」という注意がやはりありますよね。 また、このUnityのページをご覧になると、プロ・エディションには「Professional editor skin」同梱の状態ようですが。 回答者: Anonymous

Unity4.6.1p4 uGUIButton の反応順番

投稿者: Anonymous uGUI の反応順番でボタンが重なっているときの反応順番を任意にする方法を教えてください 現在の Hierarchy は main .Oblect1 ..Canvas …RedButton ….RedButtonText ..EventSystem ..Camera .Oblect2 ..Canvas …BlueButton ….BlueButtonText ..EventSystem ..Camera この時に現在は赤のボタン( Object1 )が反応します Canvas の Order Layer は Oblect1 0 Oblect2 1 です 解決 すみません。こちらUnity4.6.1f1の場合でした。 Unity4.6.1p4でも検証を行ったので別回答として書きます。 uGUI のタッチ判定の優先度は Canvas 毎にわかれており、 カメラの Depth 値 sortOrderPriority(Canvas の OrderInLayer)の値 ※値が多きほうが優先 renderOrderPriority(Canvas 毎に変わる)の値 カメラからの距離 といった優先度になっています。 カメラの Depth 値が同じなら sortOrderPriority…(Continue Reading)

macOS 上の Unity が音声ファイルのインポート中にクラッシュしてしまう

投稿者: Anonymous UnityがWindowsでは起動するがMacで起動しなくなり調べても原因がわからず困っており投稿いたしました。 クラッシュするようになった原因手順ですが GitHubを使用しWindowsにて開発 ↓ IosでビルドするためにMacPCで作業、GitHubでクローンしUnityを立ち上げる ↓ Unity起動中、BGMの読み込み部分で起動中から画面が進まず ↓ なので一旦、起動で止まっているBGMとSEをWindows消し 再びMacで起動するとUnityが無事に立ち上がった ↓ BGMが原因だと分かったのでmacで起動後に後入れでBGM.mp3を入れる方法をとることに ↓ クラッシュする 以上が今起こっていることです。 そもそも何故BGM読み込みでUnityが立ち上がらなくなったのかよく分かりません。 動かなくなった原因 (推察) 過去にBGMの設定をWindowsのUnityで弄っていたので設定を変更する前のブランチに戻して試すも動かず。 その前まではMacでも動いていました。 以上です、個人的にメタファイルが壊れたと思っているのですがWindowsで立ち上がるのでおかしいなと思っております。同じことになった人原因がわかる方いましたら教えてください。 よろしくお願いいたします。 追記 以下の画像で止まってしまいます。 Unityの再インストールは試しました。 また、リネームもしてみました、手順は Windowsの方で止まってしまうmp3をすべて消してからOK_SEだけを追加してからOK2_SE.mp3にリネームしコミットしました。 そのあと、macでプルし起動したらOK2_SE.mp3で起動が止まってしまいました。 SEファイルをすべて消した状態ならmacでもUnityが正常に立ち上がります。 macであとからSE追加するとUnityがクラッシュしてしまうといった状態です。 バージョンを追記します Unity 2018.2.21f1 解決 バージョンが古かったようでUnity 2018.2.21f1から2018.4.14にバーションを上げたところ正常に動作しました。 回答者: Anonymous

UnityでandroidのonActivityResultで取得した結果を取得する方法について

投稿者: Anonymous いつもお世話になっております。 UnityでAndroidJavaObject経由でonActivityResultの結果取得方法についての質問となります。 やりたいことは以下となります。 Unity(C#)から以下のコードでAndroidJavaコードをコールする using (AndroidJavaClass unityPlayer = new AndroidJavaClass(“com.unity3d.player.UnityPlayer”)) { using (AndroidJavaObject activity = unityPlayer.GetStatic(“currentActivity”)) { using (AndroidJavaClass cls = new AndroidJavaClass (“hoge.QRCodeReader”)) { cls.CallStatic (“readQRCode”, activity); } } } 以下のJavaが呼び出される package hoge; import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Intent; import android.net.Uri; import android.util.Log; public class QRCodeReader extends Activity { public String result…(Continue Reading)

Problema con lista dentro de Dictionary en C#

publicado por: Anonymous Tengo lo siguiente : dic = new Dictionary<string, List<int>>; Pero cuando hago dic.Add los valores por parámetro que espera son un string y un List<int>, pero para una misma key (string) quiero agregar otro int a la lista, ¿cómo lo puedo hacer? solución El problema se debe a que al querer agregar…(Continue Reading)

通信レスポンスのStreamからMemoryStreamへ高速にコピーするには

投稿者: Anonymous ■やりたいこと UnityのC#にてリソースが複数入ったTarファイルをダウンロードし、 展開し保存するという処理を書いているのですが レスポンスで受け取ったデータをMemoryStreamに書き込む時 5Mのファイルを書き込み終わるのに40秒近くかかっており、 どうにかして高速したく調査しています。 Tarファイルは全部で80個で500Mほどあり、 リソースを全て落とすのに1時間ほどかかっています。 この処理はダウンロード中非同期に動作させたいので 別スレッドで動作しています。 Androidでは、これほど時間がかからず10分程で完了しており iOSでのみ起こっているので、他にも原因があるかもしれないのですが まずはログを貼って判明したこの現象からつぶしていきたいと思っています。 ■質問  ・貼り付けたソースのdo~whileで回しているところで5Mのファイルのバイナリーを   MemoryStreamに書き込んでいるのですが、このループを抜けるまでに40秒ほど   掛かっています。   コピーの仕方のまずい点を指摘していただけないでしょうか?  ・count = st.Read(buffer, 0, buffer.Length);の戻り値のcountが   16384になり16kバイトづつしか読めてないようなのですが、   このサイズは何を基準算出されるのでしょうか? ●ソースコードを抜粋しています。 using (HttpWebResponse wres = (HttpWebResponse)req.GetResponse()) { using (Stream st = wres.GetResponseStream()) { sw.WriteLine(“ストリーム書き込み前:” + ((TimeSpan)(DateTime.Now – startTime)).TotalMilliseconds.ToString() + “,”); //Debug.Log(“GetResponseStream”); using (MemoryStream memoryStream = new MemoryStream()) {…(Continue Reading)

Unity4.6 uGUIのボタンサイズなどのスマホ対応について

投稿者: Anonymous Unity4.6で追加されたuGUIでボタンやGUIを追加したときに Android SDKで使用されているViewを均等配列するandroid:layout_weight=”1″と同等の仕様はありますか? 実装したいUIとしてはiOSの電卓のように正方形、または正方形複数分のボタンを均等に配置したいと考えています 解決 uGUIの機能でGameObjectを等間隔に並べるには Horizontal Layout Group や Vertical Layout Group , Grid Layout Group を使います。 Auto Layout http://docs.unity3d.com/Manual/comp-UIAutoLayout.html スマホ対応については Canvas Scaler を使うのですが、 詳しくはテラシュールブログさんの記事が参考になると思います。 http://tsubakit1.hateblo.jp/entry/2014/12/11/223427 回答者: Anonymous

Nav Mesh Agent の重ね合わせ方

投稿者: Anonymous 複数のNav Mesh Agentを作った時に,重ねる方法を教えてください。 例: Player赤:Nav Mesh Agent Player青:Nav Mesh Agent のとき,Player赤の移動通路上にPlayer青がいたとしても,避けることなくすり抜けるようにしたい。 マルチポスト 解決 以下のサイト(teratail)で解決できました。 https://teratail.com/questions/40632 未確認ですが、 NavMeshAgent の Priority を調整してみては如何でしょうか? 双方のQualityをNoneにしてみてください。 衝突回避せずに双方をすり抜けながら目的地に進みます。 回答者: Anonymous

UnityのC#上で記述した以下のスクリプトの理解の仕方について

投稿者: Anonymous 以下のスクリプトの仕組みが理解できません。ただし、正常に作動はします。参考書籍は『UnityによるVRアプリケーション開発』p116です。 具体的に述べると、以下のDetectMovingDown()関数はワンフレーム毎に更新されるカメラアングルとその更新されたカメラアングルの更にワンフレーム後のカメラアングルの差を導き出した上で、そのワンフレーム分ずれたカメラアングルの差をワンフレームの秒単位で割って換算したものが、100以上であるならばtrueを返す関数だと私は理解しています。 例えば、ワンフレーム毎に更新されるカメラアングルが90度、そして、その更新されたカメラアングルの更にワンフレーム後のカメラアングルが60度だとしたら、ワンフレーム分ずれたカメラアングルの差は30度になります。すると、その30度をワンフレーム秒単位で割ると、仮にワンフレーム秒60分の1だとすると、3分の1という数値が導き出されます。結果的に3分の1は100よりも上ではないのでfalseが導き出されます。 すると、DetectMovingDown()関数がtrueを導き出すためには、rateがsweepRateを超えるときのワンフレーム分の角度の差は最低でも6000度なければいけません。なぜなら、60分の1で割っても100と同等の数値になるには、6000度の差がなければいけないからです。 確かに、通常ならば6000度の差は導き出されることはないはずです。しかし、私がスマートフォンを傾けることで連動して傾くゲームオブジェクトのカメラのワンフレームの差ではDetectMovingDown()関数がtrueを返す、すなわち、6000度の差を計算していることになります。しかし、ワンフレームに6000度もカメラのアングルが変わっている状況は想定できません。 以上の理解はどこが間違っているのでしょうか。 public class HeadGesture : MonoBehaviour { public bool isFacingDown=false; public GameObject Camera; public bool isMovingDown=false; private float sweepRate=100.0f; private float previousCameraAngle; void Start(){ previousCameraAngle = CameraAngleFromGround (); } // Update is called once per frame void Update () { isFacingDown = DetectFancingDown (); isMovingDown = DetectMovingDown ();…(Continue Reading)

壁ずりベクトルを使って斜面を平面に沿って上り下りしたい。

投稿者: user36373 Unity3Dです。斜面を上り下りする時に地面に沿って移動したいです。use gravtiyや 常にY軸に-50など数字を入れておくという方法など試しましたが上手くいきません。 OnCollisionStay()関数部のように壁ずりベクトルを計算して平面に沿って移動しているなずなのですがなぜ斜面を下る時に空中に浮いてしまうのでしょか?  using UnityEngine; public class Controller : MonoBehaviour { /* Ik 関係 Vector3 rightFootPos = new Vector3(0, 0, 0); Vector3 leftFootPos = new Vector3(0, 0, 0); Quaternion rightFootRot = new Quaternion(0, 0, 0, 0); Quaternion leftFootRot = new Quaternion(0, 0, 0, 0); bool isRightFootIK = false; bool isLeftFootIK = false;…(Continue Reading)

Unity:処理時間に依存してフリーズするのかどうか?

投稿者: Anonymous (一般的なコードではありませんが,Unityの処理については一般的な問題だと思うので質問させていただきます。マルチポストです) 前提 Unityで以下の取り組みをしています。簡単に言えば,人がAIを構築して対戦するゲームで,人ではなく自動生成でAIを構築して対戦させようとする取り組みです。 https://github.com/Tsunehiko511/project-puppeteer ・ファイルの説明設定 Setting.csでプレイヤーのデータを設定して,GameMaster.csのPlay関数で対戦させています。 ・問題 Game.Play関数を実行する中で,ある関数の処理をInvoke("ある関数", 0)に変えた場合と変えない場合でUnityの処理時間に違いがありました。Invokeを使えばスムーズに処理されInvokeを使わなければ,ややフリーズしてからコンソールに結果が表示されます。(リンク先のプロジェクトファイルをインポートすれば同様の環境が構築できます) 実現したいこと Game.Play関数を高速に処理したいです。そのためにInvoke関数を排除したいのですが,排除するとUnityの処理がややフリーズしてしまいます。これらの原因と解決方法を教えてください。 補足情報 以下のリンクによれば,Invoke関数で0秒を指定した時は,呼び出された場所の最後に実行されているのかなと思っています。 http://www.urablog.xyz/entry/2016/08/27/103229 このことから,Unity上で関数の処理を行う時に何らかの時間的制約があるのではないかと思っています。 解決 こちらで解決してもらいました。Invokeを使わない方が速かったです。 https://teratail.com/questions/86436 回答者: Anonymous

for文でlist内GameObjectの削除時の挙動

投稿者: Anonymous スクリプトは動いています。だけど腑に落ちないので質問します。 ballsという名前でListを作り、その中にballオブジェクトが10個入っている状態で、その中のballを全て削除したくてfor文を書きました。 for (var num = balls.Count -1; 0 < balls.Count; num–) { balls.RemoveAt (num); 前から消したら処理中にリストの長さが変わると思ったのでケツから消してます。でもこの方法ではballsリストは0になったけど、ヒエラルキー上のオブジェクトは消えてくれませんでした。リストの登録のみを削除したようです。なので次にこう書きました for (var num = balls.Count -1; 0 < balls.Count; num–) { Destroy (balls[num]); } オブジェクトは消えてくれました。でもMissingReferenceExceptionが発生しました。いわゆるヌルポです。原因がわからないのでブレイクポイントを置いてみてみました ループが回ってオブジェクトが削除されてもballs.Countが減ってません。Countメソッドは何を参照してるんでしょう?それともDestroyだと何か残骸が残るんでしょうか? 結局のところオブジェクトの削除だけであれば頭から消しても問題ありません(balls.Countは10のままですが)。どっちも綺麗にするなら、 for (var num = balls.Count -1; 0 < balls.Count; num–) { Destroy (balls[num]); //オブジェクトの削除 balls.RemoveAt (num); //リストの削除 } こんな風に二度手間になります。これでも動くけどもっとクールな方法があるはずですよね? 解決…(Continue Reading)