- 投稿日:2020-11-16T21:05:48+09:00
UnityPlayerActivity
●Unityプラグインは複数の方法がある(この糞仕様を整理してから株式上場しろよUnityめ)
(1)UnityPlayerActivityファイルを拡張する
UnityPlayerActivity.javaを使ってUnityプラグインを作る。
準備:UnityPlayerActivity.java/classes.jarはUnityExportしたProjectにもある。
Unity向けAndroidネイティブプラグインの作り方
build.gradleを編集して、プラグインにclasses.jarを含めないようにする。含めるとUnity側のclasses.jarと衝突する。
dependencies { // implementation files('libs\\classes.jar') // implementation fileTree(dir: "libs", include: ["*.jar"]) compileOnly fileTree(dir: 'libs', include: ['*.jar'])UnityでAndroid拡張を行うベストプラクティス
final Activity activity = UnityPlayer.currentActivity; で、UnityPlayerActivityを継承しなくてもOK
Unityマルチスレッドレンダリングは外す
低レベルネイティブプラグインインターフェース
Unity のレンダリングは、プラットフォームと CPU の数が一定の条件を満たす場合は、マルチスレッドで行われます。マルチスレッドのレンダリングが使用されるとき、レンダリング API の命令は、MonoBehaviour スクリプトを実行するスレッドとは完全に別の 1 つのスレッド上で行われます。そのため、プラグインがいくつかのレンダリングを即座に開始することが常に可能ではありません。なぜなら、その時レンダースレッドが行っている処理に干渉する場合があるからです。
Unity2018以降(?)はマルチスレッドレンダリングがデフォルト。OpenGLES描画は GL.IssuePluginEvent(GetRenderEventFunc(), 1);経由で行う事。
参考
Androidネイティブ開発のすすめ
https://qiita.com/relzx/items/a35f7ab6dbacb48f7e26UnityでAndroidのネイティブプラグインを使用する3つの方法
https://qiita.com/tempura/items/5e7992896c0faba08da3
- 投稿日:2020-11-16T20:10:20+09:00
モデルから立体感のあるスプライトを作る
UniversalRPではエモい2Dライトが使えます。
せっかくなので、エモイライトでエモく陰影が付くスプライトを作ってみましょう。
*下の画像で回転しているのは陰影付きのスプライトです。
まずはバンプマップを表示するShaderGraphを作成します。
サンプルとして、AssetStoreからダウンロードして既存マテリアルを半自動で変換したモデルと、
バンプシェーダーを使って表示したバンプモデル
をファイルに保存し、
UniversalRPのマテリアルにアタッチしました。
シェーダーを写経するのが面倒、という方は
アセット販売中です!
- 投稿日:2020-11-16T17:05:08+09:00
vscode で unity の breakpoint が動かない
- 投稿日:2020-11-16T16:57:23+09:00
【Unity 2D】Pixel Perfect CameraのReference Resolutionを自動調整するスクリプトを作りました
Pixel Perfect CameraのReference Resolutionを自動調整するスクリプトを作りました
解像度の変更によってこんな感じ(↑)に画面崩壊が起こることがなくなるハズ。
要件&インストール
要件
- Universal RP 7.3.1
インストール方法
- PackageManagerを開く
- 「+」→「Add package from git」をクリック
- 「 https://github.com/Masterexa/PixelPerfectCameraAdjustment.git 」を入力してEnter
- パッケージ一覧に「Pixel Perfect Camera Adjustment」が追加されて入れば、インストール成功
設定
Base Resolution
基準となるReference Pixel。Match Modeに応じた調節を経て最終的なReference Pixelが決まる。
なお、Match Modeにかかわらず算出されるReference Pixelは常に画面解像度の1/2以下になる。Match Mode
Reference Resolutionの調節方法を指定する。
- Extend
- Reference ResolutionがBase Resolutionを広げるように調節する。
個人的におすすめのモード。- Trim
- Reference ResolutionがBase Resolution内に収まるように調節する。
- Width or Height
- Base Resolutionの幅か高さを基準にReference Resolutionを調節する。
Canvas Scalar同様にスライダーで調節が可能。- Envelove
- おまけ機能。
リンク
- Github
- PackageManagerで自作ライブラリを作成する方法 - Qiita
(↑パッケージ作成の参考にしました!)
- 投稿日:2020-11-16T16:12:47+09:00
【Unity】Materialが参照している全オブジェクトのパスを取得する方法
エンジニア・非エンジニア問わずアセットを納品する場合、そのアセットに対してバリデーションをかけた方がプロダクトの安全性は向上します。
UnityEditorを通じてアセットを作成する場合、AssetDatabaseを通して様々なデータを取得できるため、バリデータを作成するのはとても簡単です。
【Unity】効率よくアセットバリデーションを作成するためのTestRunnerの活用法 - Qiita
以前TestRunnerを使ってサクッとバリデーターを作成した記事を執筆しました。今回はタイトルの通り任意のMaterialが参照する全てのオブジェクトのパスを取得する必要が出てきたので、その備忘録を残します。
GetDependenciesメソッドを使用
結論から書くと
GetDependenciesメソッド
を使いました。// Materialを指定 var materialPath = AssetDatabase.GetAssetPath(material); // 指定したMaterialに紐づくオブジェクトのパスの配列を取得 var referencePaths = AssetDatabase.GetDependencies(materialPath);上記のようなソースコードで指定したMaterialが参照するテクスチャ、シェーダ等のパスが取得できます。
取得したパスを何に使うのか?
今回取得したかった理由は、アプリに含まれるマテリアルが参照するオブジェクトがAssetBundleとしてビルドされるオブジェクトかどうかをチェックするためでした。
※間違えてAssetBundleのアセットをアプリ内で参照しちゃっていて、実機で実行するとピンク色になるアレですこの情報を元にバリデーターを作成していくという流れになります。
環境
- Unity 2019.4.11.f1
- 投稿日:2020-11-16T02:20:23+09:00
Unity Device Simulator のインストール方法
背景
Device Simulatorのインストール方法が変わったようなので、忘却録として。。。
開発環境
PC:macOS Catalina
Unity:2020.1.10f1内容
「Unity Device Simulator インストール」で検索すると、
同じような検索結果が出てくる。
メニューのwindowからPackage ManagerをクリックするとPackage Managerのダイアログが表示される。
ダイアログのAdvancedからshow preview pakagesにチェックを入れて、Device Simulatorで検索すれば見つかる、、、が肝心のAdvancedがない。調べてみると、Unity 2020.1以降からインストール方法が変わったらしい。(参考のUnity 日本語ヘルプデスクに書いてあります)
書いてある通りにやれば、無事インストールでき、GameタブにGameとSimulatorを選択できるようになる。
Safe Areaを表示したり、回転することもできる。パッケージのインストール
参考