Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unity6 の Android周辺の アップデートについて

CyberAgent
January 27, 2025
16

Unity6 の Android周辺の アップデートについて

CyberAgent

January 27, 2025
Tweet

More Decks by CyberAgent

Transcript

  1. • Unity 6におけるAndroid周辺の主要なアップデートを紹介します • Android Game Development Kit サポート •

    Addressables の Play Asset Delivery 対応 • Texture Compression Targeting 対応 • Android Project Configuration Manager • それぞれの概要や、対応の背景に触れつつ広く浅く説明します この発表で話したいこと
  2. 自己紹介 向井 祐一郎 • 株式会社 サイバーエージェント / 株式会社アプリボット • Lead

    Developer Experience • システム系の基盤開発・プロジェクトの開発支援 • プラットフォーム周り(iOS/Android)のサポート SNS・個人活動など • @yucchiy_(X) • Unity Weekly • https://blog.yucchiy.com/tags/unity-weekly/ • UniTips(社内有志で技術書典に執筆)
  3. • Android Game Development Kit(AGDK)の対応 • GameActivityへの移行や、周辺APIを利用できるように • AddressablesのPlay Asset

    Delivery(PAD)対応 • PADにおける配信設定をアセットのグループごとに設定できるように • Texture Compression Targetingのサポート • Google Playでデバイスごとに最適なテクスチャの圧縮形式 を配信できる • Android Project Configuration Managerの実装 • IPostGenerateGradleAndroidProject や テンプレート の代替機能 Unity6 におけるAndroidの主要なアップデート
  4. • ライブラリ • GameActivity • ゲーム用のコントローラやテキスト入力 • Memory Advice API

    • … • 最適化 • Android Performance Tuner • Android GPU Inspector • 適応性 • Game Mode & Game State API • Thermal API • CPU Performance Hint API • … • Android上でのゲーム開発と最適化を行うためのツールおよびライブラリ Android Game Development Kit とは https://developer.android.com/games/agdk/overview Unity6にて対応 Adaptive Performance 含めて対応
  5. • Unity 6から、アクティビティがデフォルトでGameActivityに置き換わった • ライフサイクルや入力などのスレッドサポートが向上する • GameActivity導入で ANRが低下したユースケース が共有されている •

    GameActivity経由のイベントに対してのブリッジコードを独自に記述できる • どちらのアクティビティを利用するかは切り替え可能 • Player Settings > Other Settings > Configuration GameActivityについて https://developer.android.com/stories/games/cat-daddy-agdk https://discussions.unity.com/t/introducing-gameactivity-for-android-in-2023-1/911486
  6. • Unity6 で Game Mode API と Game State API

    がサポートされた Game Mode & State API の Unity サポート https://docs.unity3d.com/6000.0/Documentation/ScriptReference/Android.AndroidGame.html
  7. • Android App Bundleを介して Google Play上でアセットを配信する仕組み • 3つの配信モードに基づいてアセットを配信する • 適切に対応すると、200MBを超えるゲームを配信できる

    • ストアからダウンロードするサイズの上限は最大4GB Play Asset Delivery について https://developer.android.com/guide/playcore/asset-delivery
  8. • install-time • アプリに埋め込まれるアセット • fast-follow • アプリインストール後に自動的にダウンロードされるアセット • on-demand

    • 利用する際にダウンロードされるアセット Play Asset Delivery の配信モード https://developer.android.com/guide/playcore/asset-delivery#6YWN5L-h44Oi44O844OI44KZ
  9. • アセットグループごとに配信モードを選択できる • カスタムパックの作成にも対応 Addressables の Play Asset Delivery 対応

    Asset Management > Addressables > Init Play Asset Delivery で設定を作成する アセットグループの 「Play Asset Delivery」項目の 「Delivery Type」を設定する アセットパックが適切に 作成できていることが確認できる
  10. • デバイスがサポートしているテクスチャの圧縮形式の中から、 最適な圧縮形式のテクスチャを配信する仕組み • ASTCを優先し、フォールバックにETC2/1 • 選択された圧縮形式のみを配信する • アプリ・アセットサイズが削減できる •

    Android App Bundleの機能として提供 Texture Compression Targeting について https://developer.android.com/guide/playcore/asset-delivery/texture-compression https://android-developers.googleblog.com/2020/09/improve-your-game-with-texture.html
  11. Texture Compression Targeting の Unity上での 設 定 https://docs.unity3d.com/6000.0/Documentation/Manual/android-distribution-google-play.html#texture-compression-targeting Build Profiles

    > Asset Import Overridesで、 圧縮設定を「No Override」に Player Settings > Other Settings > Texture Compression Formats でサポートする圧縮形式を設定 圧縮形式ごとに アセットパックが 生成されていることが 確認できる
  12. • Gradle project を C#コード上で編集するためのAPI • 既存の Gradle Templateや IPostGenerateGradleAndroidProject

    の代替 Android Project Configuration Managerとは https://docs.unity3d.com/6000.0/Documentation/Manual/android-modify-gradle-project-files-agp.html using UnityEditor.Android; public class ModifyAndroidProjectScript : AndroidProjectFilesModifier { public override void OnModifyAndroidProjectFiles( AndroidProjectFiles projectFiles) { projectFiles.UnityLibraryBuildGradle. Android.DefaultConfig.MinSdkVersion.Set(28); } } 「AndroidProjectFilesModifier」を継承 Min SDK Versionを28に設定
  13. IPostGenerateGradleAndroidProjectの課題 • GradleやXMLを更新する際に、パーサーを独自で実装する必要がある using UnityEditor.Android; using UnityEngine; class MyCustomBuildProcessor :

    IPostGenerateGradleAndroidProject { public int callbackOrder { get { return 0; } } public void OnPostGenerateGradleAndroidProject(string path) { Debug.Log("OnPostGenerateGradleAndroidProject at path " + path); } } Androidプロジェクトの ルートパスが直接渡される ここでGradleやXMLを更新するための パーサーを書く必要がある
  14. Android Project Configuration Manager の使 い道 • Gradleを書き換えたくなった場合には、まずは Android Project

    Configuration Manager の利用を検討する • 基本的には IPostGenerateGradleAndroidProject の高レベルAPI • サポートしない書き換えが発生したら、テンプレートの利用を検討する
  15. • Unity 6における Androidの主要なアップデートについて、 その背景や周辺知識をふまえて紹介しました • Android Game Development Kit

    • Addressables の Play Asset Delivery 対応 • Texture Compression Targeting 対応 • Android Project Configuration Manager まとめ