tencent cloud

Game Multimedia Engine

プロジェクトのエクスポート

PDF
フォーカスモード
フォントサイズ
最終更新日: 2024-01-18 15:49:51
Unityを使う開発者たちがTencent Cloud Gaming Multimedia Engineの製品APIのデバッグ・アクセスを手軽に実行できるように、ここでUnity開発に向けるプロジェクトエクスポート設定について説明します。

iOSプラットフォームのエクスポートについて

UnityプロジェクトからXcodeプロジェクトにエクスポートする際には、GME動的ライブラリを処理する必要があり、処理手段はUnityのバージョンによって異なります。

1. 動的ライブラリ処理(Unity 2019以降)

設定の原理

UnityEditor.iOS.Xcode.Extensions.PBXProjectExtensions.AddFileToEmbedFrameworksを使用して新しいEditor OnPostprocessBuildスクリプトを作成します。このAPIは、動的ライブラリを最終的なパッケージBundleのframeworkディレクトリに自動的にコピーし、署名します。
ビジネス層は、必要な機能に基づいて動的ライブラリを削減し、動的ライブラリのリストに基づいてサンプルコードにインポートするフレームワークのリストを決定します。動的ライブラリの機能については、動的ライブラリディレクトリをご参照ください。
string[] framework_names = {
"libgme_fdkaac.framework",
"libgme_lamemp3.framework",
"libgme_ogg.framework",
"libgme_soundtouch.framework"
};

サンプルコード

Demoプロジェクト内のadd_dylib.csスクリプトファイルを参照して、プロジェクトのニーズに応じて、このコードの一部をプロジェクト内のEditorフォルダに配置します。
[UnityEditor.Callbacks.PostProcessBuild(1002)]
public static void OnPostprocessBuild (UnityEditor.BuildTarget BuildTarget, string path){
if (BuildTarget == UnityEditor.BuildTarget.iOS) {
UnityEngine.Debug.Log ("OnPostprocessBuild add_dylib:" + path);
#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX
{
string projPath = UnityEditor.iOS.Xcode.PBXProject.GetPBXProjectPath (path);
UnityEditor.iOS.Xcode.PBXProject proj = new UnityEditor.iOS.Xcode.PBXProject ();

proj.ReadFromString (System.IO.File.ReadAllText (projPath));
// string targetGuid = proj.TargetGuidByName (UnityEditor.iOS.Xcode.PBXProject.GetUnityTargetName ()); // 2018
string targetGuid = proj.GetUnityMainTargetGuid(); // 2019

// インポートされたフレームワークによる削減
string[] framework_names = {
"libgme_fdkaac.framework",
"libgme_lamemp3.framework",
"libgme_ogg.framework",
"libgme_soundtouch.framework"
};

for (int i = 0; i < framework_names.Length; i++)
{
string framework_name = framework_names[i];
string dylibGuid = null;
dylibGuid = proj.FindFileGuidByProjectPath("Frameworks/Plugins/iOS/" + framework_name);

if (dylibGuid == null) {
UnityEngine.Debug.LogWarning (framework_name + " guid not found");
}else{
UnityEngine.Debug.LogWarning (framework_name + " guid:" + dylibGuid);
// proj.AddDynamicFramework (targetGuid, dylibGuid);
UnityEditor.iOS.Xcode.Extensions.PBXProjectExtensions.AddFileToEmbedFrameworks(proj, targetGuid, dylibGuid);

proj.AddBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "@executable_path/Frameworks");
System.IO.File.WriteAllText (projPath, proj.WriteToString ());
}
}
}
#endif
}
}

2. 動的ライブラリ処理(Unity2019以前)

UnityEditor.iOS.Xcode.Extensionsは現在Unity 2019以降でのみ使用できます。以前のUnityバージョンでの使用については、上位バージョンのUnityからUnityEditor.iOS.Xcodeパッケージをエクスポートするか、添付ファイルUnityEditorAV.iOS.XCode.zipを参照してこのファイルを展開し、Engineering Directory Editorフォルダに配置してもよい。


3. Xcodeプロジェクトのエクスポート

Xcode10.0以降であることを確認し、UnityエディタでXcodeプロジェクトをエクスポートします。

4. bitcodeの無効化

コンパイル中に次のようなエラーが表示された場合は、Bitcodeを無効にしてください。この設定を無効化するには、Targets>Build SettingsでBitcodeをサーチし、対応するオプションを見つけてからNOに設定すればよいです。


5. iOSプラットフォームの権限を追加

Required background modes:バックグラウンド実行が許容されます(オプション)。
Microphone Usage Description:マイク権限が許容されます。

6. 補充ライブラリファイル

コンパイル中に次の図のエラーが発生した場合、ライブラリファイルを補完してください。

ライブラリファイルのリストは次のとおりです:
libc++.tbd
CoreMedia.framework
libresolv.tbd
AVFoundation.framework
Security.framework
CoreAudio.framework
AudioToolbox.framework
libiconv.tbd
libz.tbd
SystemConfiguration.framework
OpenAL.framework

7. libresolv9.tbdを追加

次の図のエラーが発生した場合、

UnityFrameworkにlibresolv9.tbdを追加してください。


8. エクスポート問題

エクスポートについては、iOSエクスポートをご参照ください。

Androidプラットフォームからのエクスポート

1. libファイルの削除

GME Unity SDKには、arm64-v8a、armeabi-v7aおよびx86のlibファイルがデフォルトで用意されています。プロジェクトの必要に応じて削除してください。
架构缺失
指定されたアーキテクチャがないAndroid実行可能ファイルをエクスポートすると、Crashが発生します。
実行可能ファイルapkファイルをエクスポートした後、開くと黒画面となり、強制終了した場合、通常は適切なアーキテクチャのlibファイルがないので、プロジェクトに応じて追加または削除してください。

2. 権限設定

2.1 必要な権限 必ずプロジェクトのAndroidManifest.xmlファイルに下記の権限を追加してください。
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
2.2 必要に応じて権限を追加 必要に応じてプロジェクトのAndroidManifest.xmlファイルに、下記の権限を追加してください。
読み書き権限
読み書き権限の追加は必須ではありません。次のルールに基づいて追加するかどうかを判断します。
デフォルトのログパス(/sdcard/Android/data/xxx.xxx.xxx/files)を使用している場合は、SetLogPathが呼び出されていないことを意味しますので、WRITE_EXTERNAL_STORAGE権限は必要ありません。
SetLogPathインターフェースを呼び出してログパスを外部ストレージデバイスに配置し、音声メッセージ機能を使用した録音時のストレージパスは外部ストレージデバイスである場合は、WRITE_EXTERNAL_STORAGE権限をユーザーに要求し、ユーザーの明示的な承認を得る必要があります。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

3. エクスポート問題

エクスポートについては、Androidからのエクスポートをご参照ください。

Windowsプラットフォームのエクスポートについて

エクスポートについては、Windowsからのエクスポートをご参照ください。

WebGLからのエクスポート

1. WebGL下のpluginsの設定

WebGLプラットフォームでのgmesdkと競合しないよう、Windowsプラットフォームでのgmesdk.dllの適用範囲を設定します。



2. Flare Layerの取消(Unity 2018以降)


一部のUnityバージョンではMainCameraのFlare Layerモードをサポートしなくなるため、パッケージ化するSceneでFlare Layerのチェックを外す必要があります。チェックを外さない場合、次のエラーが表示されます:


3. テンプレートの選択

WebGLプラットフォームからエクスポートするときは、GMEのWebGLテンプレートを選択します。これにより、正常にパッケージ化された目的物が依存ライブラリに正しくインポートしていることが保証されます。プロジェクトでは、デフォルトでGMEWebGLTemplatesUnity2018テンプレートが使用されます。このテンプレートはUnity2018とUnity2019の両方のバージョンをサポートしています。Unity2020およびUnity2021のバージョンでは、パッケージ化の際に使用テンプレートを変更し、GMEWebGLTemplatesUnity2021を使用してパッケージ化する必要があります。


4. フロントエンドライブラリの導入

GME- WebGLを独自のプロジェクトにインポートする場合、Unityを使用して適切なWebページを生成する際には、フロントエンドライブラリを手動で導入し、フロントエンドライブラリファイルを適切な参照位置に配置し、Audioタグを追加する必要があります(下の図を参照)。Unityの目的物をパッケージ化するたびに上記の作業を自動的に行いたい場合は、GME-WebGL demoのやり方を参考にして、自分のプロジェクトに適切なテンプレートを追加してください。


5. エクスポート問題

エクスポートについては、Unity-WebGLからのエクスポートをご参照ください。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック