20201116のUnityに関する記事は6件です。

UnityPlayerActivity

●Unityプラグインは複数の方法がある(この糞仕様を整理してから株式上場しろよUnityめ)

(1)UnityPlayerActivityファイルを拡張する
UnityPlayerActivity.javaを使ってUnityプラグインを作る。
準備:

image.png

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マルチスレッドレンダリングは外す

image.png

低レベルネイティブプラグインインターフェース

Unity のレンダリングは、プラットフォームと CPU の数が一定の条件を満たす場合は、マルチスレッドで行われます。マルチスレッドのレンダリングが使用されるとき、レンダリング API の命令は、MonoBehaviour スクリプトを実行するスレッドとは完全に別の 1 つのスレッド上で行われます。そのため、プラグインがいくつかのレンダリングを即座に開始することが常に可能ではありません。なぜなら、その時レンダースレッドが行っている処理に干渉する場合があるからです。

Unity2018以降(?)はマルチスレッドレンダリングがデフォルト。OpenGLES描画は GL.IssuePluginEvent(GetRenderEventFunc(), 1);経由で行う事。

参考

Androidネイティブ開発のすすめ
https://qiita.com/relzx/items/a35f7ab6dbacb48f7e26

UnityでAndroidのネイティブプラグインを使用する3つの方法
https://qiita.com/tempura/items/5e7992896c0faba08da3

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

モデルから立体感のあるスプライトを作る

UniversalRPではエモい2Dライトが使えます
せっかくなので、エモイライトでエモく陰影が付くスプライトを作ってみましょう。
*下の画像で回転しているのは陰影付きのスプライトです。
ezgif-3-b6a4f7e766c9.gif

まずはバンプマップを表示するShaderGraphを作成します。
2020-06-12_224906.png

サンプルとして、AssetStoreからダウンロードして既存マテリアルを半自動で変換したモデルと、
outputURP_albedo.png

バンプシェーダーを使って表示したバンプモデル
outputURP_bump.png
をファイルに保存し、
UniversalRPのマテリアルにアタッチしました。
2020-06-13_000845.png

1枚絵ですがかなり立体感があります。
gif_animation_003.gif

シェーダーを写経するのが面倒、という方は
アセット販売中です
ModelToBump_Icon160x160.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

vscode で unity の breakpoint が動かない

これ。

error.jpg

error while processing request 'stackTrace' (exception: This request is not supported by the protocol version implemented by the debuggee.)

Debugger for Unity と Unity のバージョンが不一致?

拡張の右下の ⚙️ のメニューから Install Another Version... を選んで、

other_version.jpg

適当なバージョン選ぶ。

select_version.jpg

Unity-2018.4 + v2.7.5 でブレイクポイントを動作させることができた。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Unity 2D】Pixel Perfect CameraのReference Resolutionを自動調整するスクリプトを作りました

Pixel Perfect CameraのReference Resolutionを自動調整するスクリプトを作りました

x.png

解像度の変更によってこんな感じ(↑)に画面崩壊が起こることがなくなるハズ。

要件&インストール

要件

  • Universal RP 7.3.1

インストール方法

  1. PackageManagerを開く
  2. 「+」→「Add package from git」をクリック
  3. https://github.com/Masterexa/PixelPerfectCameraAdjustment.git 」を入力してEnter
  4. パッケージ一覧に「Pixel Perfect Camera Adjustment」が追加されて入れば、インストール成功

設定

Soubunze - Tutorial - PC, Mac & Linux Standalone - Unity 2019.4.3f1 Personal [PREVIEW PACKAGES IN USE] _DX11_ 2020_11_16 16_50_48 (2).png

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
おまけ機能。

リンク

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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を表示したり、回転することもできる。

スクリーンショット 2020-11-16 2.17.54.png

パッケージのインストール

プレビューのパッケージ

参考

Unity 日本語ヘルプデスク

公式

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む