NinaLabo

個人ゲーム開発者の技術メモ

Unity

【Unity】UIElementsの導入

Unity2020になってEditor利用だけだったUIElementsがランタイムのゲームUIとして使えるようになったようです。 UIElements 開発者ガイド - Unity マニュアル 原始的なIMGUIに始まり、NGUIが席巻したと思ったら、UGUIがUnityから出て、落ち着いてきた頃にUIEl…

【Unity】LWRPプロジェクトの作成とサンプルシーン

Unity2018.1 から LWRP (Lightweight Render Pipeline: 軽量レンダーパイプライン) が導入されました。LWRPはSRP(Scriptable Render Pipeline)の1つで、HDRP (High Definition Render Pipeline: 高画質レンダーパイプライン)に比べ軽量でモバイル向きだそ…

【Unity】async/awaitのフレーム消費

C# 6.0から async/await が使えるようになり、コルーチンでは解決できなかった「何もしてないのにフレーム消費されてしまう」問題が解決できそうです。 まずは今までのコルーチン処理です。IEnumeratorを返すメソッドでは下記のように非同期処理を上から順に…

【Unity】 async/awaitの実行スレッド

C#6.0から async/await が使えるようになり非同期処理がスッキリ書けそうなので興味あるのですが、マルチスレッドとの関連が不明だったので色々試してみました。 実行環境 Unity2018.3.4f1 Taskのasync/await まずはシンプルなasync/awaitのサンプル。TestAs…

【Unity】MagicaVoxel で Export した obj ファイルのマテリアルが変更できなくなった

先日、Unity2017からUnity2018にアップデートしたのですが、MagicaVoxel で エクスポートした obj ファイルのマテリアルを変更するために、objファイルを選択し、Inspector の Materials タブを選択すると Import Materials 以下の項目が何も出なくなりまし…

【Unity】.vs ファイルを削除する

Unity 2018 にして Visual Studio を使用し始めたところ、ソースコードを修正するたびに以下の差分が出るようになりました。 modified: [プロジェクトフォルダ]/.vs/rogue2-unity/xs/UserPrefs.xml modified: [プロジェクトフォルダ]/.vs/rogue2-unity/xs/sq…

【Unity】iPhone に実機転送すると development team がないエラー

久しぶりに iPhone に実機転送しようとしたところ、XCode実行時に以下のエラーが出ました。 Signing for "Unity-iPhone" requires a development team. Select a development team in the project editor. (in target 'Unity-iPhone') この記事によれば、Xco…

【Unity】GoogleMobileAds で CocosPods エラー

エラー内容 Unity で広告配信を実装しようと GoogleMobileAds をインストールしたところ、Unityで再生した時にエラーが出るようになりました。プラットフォームが Android の時は問題なかったのですが、iOSにした途端エラーが出るようになりました。広告表示…

Google から削除されたアプリの復帰(プライバシーポリシー編)

ある日、突然 Google Play Support から メールがきました。 審査の結果、 ローグスフィア は、Google Play ポリシーに違反していると判断されたため、Google Play ストアから削除されました。このアプリは、ポリシーに準拠するアップデートをご送信いただく…

【Unity】ポストプロセスでピンチ表現を実装する

製作中のローグライクゲーム『ローグスフィア』では、HPが少なくなったときのピンチ表現にポストプロセス(PostProcess)を使用しています。 この程度の表現であれば、普通にSprite画像を重ねて表示するだけでもよく、わざわざポストプロセスを使わなくても…

【Unity】iPhoneX での UI 開発(予備知識編)

11月3日に発売を予定されている iPhoneX(iPhone 10)が開発者泣かせ。主に UI に影響が出そうで、なんとか uGUI をうまく拡張して最小コストで対応できないだろうか調べ始めております(残念ながら結論は出ていない) 予備知識が全然ないので、開発を始める…

Unityで 謎の Request error (error) を解消する

Unity で開発しているとたまにConsole上に表示されるリクエストエラー。アプリの動作に影響はないものの、ずっと気になってました。 Request error (error): UnityEditor.AsyncHTTPClient:Done(State, Int32) 以下の手順で出なくなります Unity > Preference…

【Unity】MagicaVoxel のモデルに Blender でアニメーションをつけて Unity で動かす(後編)

MagicaVoxel で 3Dモデルを作成し、Blender にインポートするところまで前編でやりました。 ninagreen.hatenablog.com 後編ではBlenderに取り込んだモデルに簡単なアニメーションをつけて、Unityで動かしたいと思います。ただ、その前に Blender 初めての方…

【Unity】Segmentation fault 11 でエラーになる件

エラー発生 Unityのアプリを TestFlight にアップしようと思い、Unity で iOS ビルド実行後、Xcode の Product の Archive を実行したところ、以下のエラーが発生しました。 clang: error: unable to execute command: Segmentation fault: 11 clang: error:…

【C#】三角関数で2点間の線の長さと角度を計算する

下記のようなスキルツリーのミニマム版みたいなものを実装しているのですが、ボタンとボタンを繋ぐ線の長さと角度は計算して配置しています。 特定の2点間を線でつなぐのを Unity でどう書けばいいのか、いつもやりかたを忘れてしまうのでまとめておきます。…

Unity 5.5 にアップデートしたら TexturePacker の画像が崩れてしまう件

Unity を 5.3.6f1 から 5.5.0f3 にアップデートしたら、見た目がおかしくなってしまいました(左:BEFORE、右:AFTER)。 川(水たまり?)の画像のエッジ部分がずれてしまってます。表示が崩れてしまった部分はTexturePackerで画像をまとめていた箇所でした…

【Unity】Unity で ゲームデータをセーブするのに FlatBuffers を使ってみる(導入編)

永続化したいデータ(ゲームを終了しても残しておきたデータ)をどうやって保存するのが最適なのかはいつも悩みます。今開発中のゲームはサーバを使用しないつもりなので、データはローカル(端末)に保存するつもりですが、パッと思いつくだけでも色んな実…

【Unity】MagicaVoxel のモデルに Blender でアニメーションをつけて Unity で動かす(前編)

以前の記事では、MagicaVoxel で3Dドットモデルを作成して、Unity に取り込んで動かすまでをやりました。 ninagreen.hatenablog.com 実際には、3Dドットのボクセルモデルに攻撃モーションなどのアニメーションをつけたいので、MagicaVoxel でエクスポートし…

【Unity】マルチタッチの開発に役立つ Unity Remote

ピンチイン、ピンチアウトで拡大縮小する処理を Unity で実装する際に、いちいちビルドして実機に転送して確認だと開発効率が悪いので Unity Remote を使ってみたのですが、結構使えたので導入手順を記載しておきます。 Unity Remote を使えば、Unity Editor…

【Unity】3Dモデルにシェーダーでアウトラインをつける(失敗編)

キャラクターと背景の色が同系色だと見にくいので、白猫プロジェクトみたいに3Dキャラクターの周りを線で囲みたいと思い、やりかたを調べてみました。 トゥーンシェーダー 最初に行き着いたのが、トゥーンシェーダー。 Unity 付属のシェーダーにアウトライン…

Unity のアプリを TestFlight で配信する(iOS編)

ゲームがある程度動くようになったので、自分以外の人(特に非エンジニア)にも遊んでもらうために、TestFlight で 開発途中のゲームを特定のメンバーにだけ配信することにしました。iOS の場合、配信までの手続きが多くて大変だったのでまとめておきます。…

【Unity】uGUIのオブジェクトをタッチしているか判定する

実装方法 EventSystem.current.IsPointerOverGameObject () で判定できます。ただし、これだと実機ではうまくいきません。 EventSystem.current.IsPointerOverGameObject (fingerId) 実機の場合は、fingerIdも指定しないといけません。fingerId は Input#Get…

MagicaVoxel の 3Dドット絵を Unity に取り込むまで

今開発中のローグライクゲームを、最終的には Crossy Road のような3Dドットにしようという野望がありまして。 クロッシーロード HIPSTER WHALE ゲーム 無料 作り方をいろいろ調べてみたんですが、エンジニアでも簡単に扱えそうな MagicaVoxel というツール…

Unity 5.3 で Application.LoadLevel が Obsolete になりました

シーンを遷移するときに呼び出す Application.LoadLevel が、Unity 5.3 から非推奨になったんですね。MonoDevelop で Application.LoadLevel を呼び出している箇所に警告が出ていました。 `UnityEngine.Application.LoadLevel(int)' is obsolete: `Use Scene…

Unity 5.3 に アップデートした感想まとめ

Unity 5.2.1 を 5.3 にアップデートして、いま開発中のゲームを動かしてみました。 アップデート方法 以下のリンクからインストーラーをダウンロードして実行すればインストールできます。 https://unity3d.com/jp/get-unity/update 変更点の詳細は、以下の…

【Unity】DOTween のインストール

Unityで使えそうなTween系のツールとして、iTween、HOTween、LeanTween などありますが、コードが簡潔に書けるので、個人的には DOTween が好みです。アニメーションのほとんどは Unityアニメーション(Mechanim)で作っていますが、例えばA地点からB地点へ…

【C#】リストや配列のソート方法まとめ

リスト(List)や 配列(Array)の 並び替えの方法をまとめました。 《CASE1》リスト内のオブジェクトの変数で並び替え 社員オブジェクト(Employee)を格納した 社員リスト(employeeList)があるとして、その社員リストを 社員番号(Employee.ID)で並び替…

【C#】数値を符号(プラス/マイナス)を付けた文字列に変換する

たとえば・・ 数値がプラスの場合は、 「こんぼう +1」 数値がマイナスの場合は、 「こんぼう -1」 数値がゼロの場合は、 「こんぼう」 と表示するとします。 もちろん、if分で場合分けして、文字列を組み立てればできるのですが、 string.Format ("{0} {1}"…

【Unity】GameObjectをSetParentするとエラーになる件

エラー内容 Setting the parent of a transform which resides in a prefab is disabled to prevent data corruption. この時点では何のことなのか、さっぱりわからず... エラー箇所 gameObj.transform.SetParent (baseTransform); 子のゲームオブジェクト(…

【Unity】Unity 5.2.1 の uGUI で Source Image がない Image の表示がおかしくなる件

Unity を 5.2.0f3 から 5.2.1f1(2015/10/13時点の最新版)にアップデートしたところ、uGUIの一部のImageコンポーネントの表示がおかしくなってしまいました。 単純に、画面全体を覆う白い背景を表示したくて、上図のように Source Image を設定せずに、Colo…