0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

今回の主な話題:Instance IDの定義、モデルMesh Compression導入設置、Static BatchingがDrawCallへの影響。


アセット管理

Q1:公式ドキュメントでInstance IDへの定義は次のとおりです。

「The instance id of an object is always guaranteed to be unique.」

したがって、一つのSpriteアセット、ゲーム内のInstance IDは唯一はずですが、テスト中に妙な問題が起こしました。
9.png
10.png
これはプリントImageにあるSpriteのInstance IDですが、アセットファイルにこの画像を選択し、InspectorのDebugモードで表示されたInstance IDと一致しません。
11.png
後で、Imageに対応するSpriteのGUIDをプリントしました。.metaファイルのGUIDに対応しているため、Instance IDに一致性がない理由がわかりません。

私はそう理解しています。コードで取得したInstance IDと、Inspectorで確認された画像のInstance IDが属するオブジェクトはインスタンスではありません。つまり、Instance IDの唯一性は具体的なアセットではなく、オブジェクトインスタンスに対するものです。

たとえば、プロジェクト内のPrefabファイルのInstance IDと、シーン内のインスタンス化されたオブジェクトのInstance IDも異なります。


アセット管理

Q2: 3Dモデルをインポートすると、Mesh Compressionの設置は、最終的にどんな結果を導きますか?Unityのドキュメントを読んだで、それはメッシュのストレージの圧縮最適化にすぎないようです。直接的な利点は、パッケージ本体が小さくなることですが、一部のモデルが変形しやすくなることもあります。

では、問題は下記のようです。
1)ロード時には圧縮により遅くなりますか?または、圧縮完了後にMeshにロードして初期化する速度は早くなれますか?(パッケージが小さくなりましたから)
2)これを開くと実行中のパフォーマンス最適化に役立ちますか?
3)このスイッチは法線効果に影響しますか?
4)このオプションを開くことをお勧めしますか?

1)数値上の精密桁数のみが削減されるため、ロード速度の差は小さいはずです。さらに、メッシュ自体がそれほど大きくない場合、ロード速度は非常に高速ですから、ロードの違いを気にする必要はありません。
2)ドキュメントによると、Compressionをオンにするかどうかに関係なく、ロード後にメモリ占用が同じになりますから、実行時のパフォーマンスに違いはないはずです。
3)法線の部分が圧縮されるかどうかは本当に言いにくいので、具体的なプロジェクトと組み合わせて確認する必要があります。
4)このオプションを有効にするかどうかは、モデル自体によって異なります。アーティストさんが視覚的に許容できると感じる限り、Compressionをできるだけ高く選択すれば良いです。


レンダリング

Q3:UWA Blogで前の記事を読みましたが、一つ疑問があります。なぜStatic BatchingはDrawCallの数 に影響しませんか?

正確には、Unityバージョン5.0〜5.3で、Static BatchingはGraphics DriverにあるDraw Callの回数を影響しません。これは、これらのバージョンでは、Unityが4.xのようにindex bufferを動的にバッチ処理しないためです。この点は、UWA DAYでもう詳しく説明しました。
13.png
ただし、Unity 5.4バージョン以降、Draw Callバッチ操作は元に戻され、以前の4.xと同じであるため、現在Unity 5.5、5.6、および2017以降のバージョンを使用している場合は、Static Batching後にDraw Callは変わる可能性があります。


コード

Q4:サブクラスが親クラスのシリアル化されたフィールドがInspectorに表示されないようにする方法はありますか?注:親クラスフィールドはvirtulではありません。

PropertyAttributeは実現できはずです。考え方は大体次とおります。PropertyDrawerは、OnGUIの時にSerializedObjectのタイプを判断し、それが親クラスである場合にのみ本格的な描画を行います。


UWA Technologyは、モバイル/VRなど様々なゲーム開発者向け、パフォーマンス分析最適化ソリューション及びコンサルティングサービスを提供している会社でございます。

UWA公式サイト:https://jp.uwa4d.com
UWA公式ブログ:https://blog.jp.uwa4d.com

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?