public static void InitializeLibrary() { /* 初期化カウンタの更新 */ CriAtomPlugin.initializationCount++; if (CriAtomPlugin.initializationCount != 1) { return; } /* CriWareInitializerが実行済みかどうかを確認 */ bool initializerWorking = CriWareInitializer.IsInitialized(); if (initializerWorking == false) { Debug.Log("[CRIWARE] CriWareInitializer is not working. " + "Initializes Atom by default parameters."); } /* 依存ライブラリの初期化 */ CriFsPlugin.InitializeLibrary(); /* ライブラリの初期化 */ CriAtomPlugin.criAtomUnity_Initialize(); /* CriAtomServerのインスタンスを生成 */ #if UNITY_EDITOR /* ゲームプレビュー時のみ生成する */ if (UnityEngine.Application.isPlaying) { CriAtomServer.CreateInstance(); } #else CriAtomServer.CreateInstance(); #endif }
public static void FinalizeLibrary() { /* 初期化カウンタの更新 */ CriAtomPlugin.initializationCount--; if (CriAtomPlugin.initializationCount < 0) { Debug.LogError("[CRIWARE] ERROR: Atom library is already finalized."); return; } if (CriAtomPlugin.initializationCount != 0) { return; } /* CriAtomListener の共有ネイティブリスナーを破棄 */ CriAtomListener.DestroySharedNativeListener(); /* CriAtomServerのインスタンスを破棄 */ CriAtomServer.DestroyInstance(); /* ライブラリの終了 */ CriAtomPlugin.criAtomUnity_Finalize(); /* 依存ライブラリの終了 */ CriFsPlugin.FinalizeLibrary(); }
void OnDisable() { if (_instance == this) { _instance = null; } }
void Awake() { /* インスタンスは常に1つしか生成されないことを保証する */ if (_instance == null) { _instance = this; } else { GameObject.Destroy(this); } }
void OnDisable() { #if UNITY_EDITOR UnityEditor.EditorApplication.playmodeStateChanged -= OnPlaymodeStateChange; #endif if (_instance == this) { _instance = null; } }
void OnDisable() { #if UNITY_EDITOR #if UNITY_2017_1_OR_NEWER UnityEditor.EditorApplication.playModeStateChanged -= OnPlayModeStateChanged; #else UnityEditor.EditorApplication.playmodeStateChanged -= OnPlaymodeStateChange; #endif #endif if (_instance == this) { _instance = null; } }
protected override void OnDisable() { base.OnDisable(); #if UNITY_EDITOR #if UNITY_2017_2_OR_NEWER UnityEditor.EditorApplication.playModeStateChanged -= OnPlayModeStateChanged; UnityEditor.EditorApplication.pauseStateChanged -= OnPauseStateChanged; #else UnityEditor.EditorApplication.playmodeStateChanged -= OnPlaymodeStateChange; #endif #endif if (_instance == this) { _instance = null; } }
public static void InitializeLibrary() { /* 初期化カウンタの更新 */ CriAtomPlugin.initializationCount++; if (CriAtomPlugin.initializationCount != 1) { return; } /* シーン実行前に初期化済みの場合は終了させる */ if (CriAtomPlugin.IsLibraryInitialized() == true) { CriAtomPlugin.FinalizeLibrary(); CriAtomPlugin.initializationCount = 1; } /* 初期化パラメータが設定済みかどうかを確認 */ if (CriAtomPlugin.isConfigured == false) { Debug.Log("[CRIWARE] Atom initialization parameters are not configured. " + "Initializes Atom by default parameters."); } /* 依存ライブラリの初期化 */ CriFsPlugin.InitializeLibrary(); /* ライブラリの初期化 */ CriAtomPlugin.criAtomUnity_Initialize(); /* CriAtomServerのインスタンスを生成 */ #if UNITY_EDITOR /* ゲームプレビュー時のみ生成する */ if (UnityEngine.Application.isPlaying) { CriAtomServer.CreateInstance(); } #else CriAtomServer.CreateInstance(); #endif /* CriAtomListenerが存在しない場合のためのダミーリスナーを生成 */ CriAtomListener.CreateDummyNativeListener(); }
public static void FinalizeLibrary() { /* 初期化カウンタの更新 */ CriAtomPlugin.initializationCount--; if (CriAtomPlugin.initializationCount < 0) { CriAtomPlugin.initializationCount = 0; if (CriAtomPlugin.IsLibraryInitialized() == false) { return; } } if (CriAtomPlugin.initializationCount != 0) { return; } /* CriAtomListenerが存在しない場合のためのダミーリスナーを破棄 */ CriAtomListener.DestroyDummyNativeListener(); /* CriAtomServerのインスタンスを破棄 */ CriAtomServer.DestroyInstance(); /* 未破棄のDisposableを破棄 */ CriDisposableObjectManager.CallOnModuleFinalization(CriDisposableObjectManager.ModuleType.Atom); /* ユーザエフェクトインタフェースのリストをクリア */ if (effectInterfaceList != null) { effectInterfaceList.Clear(); effectInterfaceList = null; } /* ライブラリの終了 */ CriAtomPlugin.criAtomUnity_Finalize(); /* 依存ライブラリの終了 */ CriFsPlugin.FinalizeLibrary(); }
//----- method ----- public void Initialize(string cryptoKey) { #if ENABLE_CRIWARE_SOFDEC if (!CriManaPlugin.IsLibraryInitialized()) { // VP9初期化. if (CriManaVp9.SupportCurrentPlatform()) { CriManaVp9.SetupVp9Decoder(); } } #endif #if ENABLE_CRIWARE_ADX || ENABLE_CRIWARE_SOFDEC // CRIの管理GameObject名にリネーム. gameObject.transform.name = CriWareManageObjectName; // CriAtomServer → CriAtomの順で初期化しないとCriAtomにCriAtomServerを生成されてしまう. CriAtomServer.CreateInstance(); if (Initializer == null) { // Acfを管理する為自動初期化を無効化. var source = initializerPrefab.Source; var initializerSource = UnityUtility.GetComponent <CriWareInitializer>(source); initializerSource.dontInitializeOnAwake = true; // 生成. Initializer = initializerPrefab.Instantiate <CriWareInitializer>(); Initializer.transform.name = "Initializer"; //======================================================== // ライブラリ初期化(この処理完了後にCRIが有効化される). //======================================================== // 手動管理する為無効化. Initializer.dontDestroyOnLoad = false; if (!string.IsNullOrEmpty(cryptoKey)) { // ※ ADX2-LEは自動で暗号化処理が掛かるのでdecrypterConfig自体が存在しない. #if !ENABLE_CRIWARE_ADX_LE // 認証キー. Initializer.decrypterConfig.key = cryptoKey; #endif } // インゲームプレビュー無効化. if (!Debug.isDebugBuild) { Initializer.atomConfig.usesInGamePreview = false; } // ファイルハンドルの使用数を節約する為、ファイルアクセスが行われるタイミングでのみハンドルを利用するよう変更. // ※ 逐次オープンとなるためファイルアクセスの性能は低下する. Initializer.fileSystemConfig.numberOfBinders = 65535; Initializer.fileSystemConfig.minimizeFileDescriptorUsage = true; // 同時インストール可能数を設定. Initializer.fileSystemConfig.numberOfInstallers = 65535; // 初期化実行. Initializer.Initialize(); } if (ErrorHandler == null) { var errorHandlerObject = UnityUtility.CreateEmptyGameObject(gameObject, "ErrorHandler"); UnityUtility.SetActive(errorHandlerObject, false); // Awakeが実行されないように非アクティブでAddComponent. ErrorHandler = errorHandlerObject.AddComponent <CriWareErrorHandler>(); ErrorHandler.dontDestroyOnLoad = false; UnityUtility.SetActive(errorHandlerObject, true); } #if ENABLE_CRIWARE_FILESYSTEM // CriFsServerはライブラリの初期化後に生成. CriFsServer.CreateInstance(); #endif // CriAtomはライブラリの初期化後に生成. var criAtom = gameObject.AddComponent <CriAtom>(); // CriAtomのSetupが隠蔽されているので手動で初期化する. criAtom.acfFile = Initializer.atomConfig.acfFileName; if (!string.IsNullOrEmpty(criAtom.acfFile)) { var acfPath = PathUtility.Combine(Common.streamingAssetsPath, criAtom.acfFile); acfPath += CriAssetDefinition.AcfExtension; CriAtomEx.RegisterAcf(null, acfPath); } #endif }
//----- method ----- public void Initialize(string decryptKey) { #if ENABLE_CRIWARE // CRIの管理GameObject名にリネーム. gameObject.transform.name = CriWareManageObjectName; // CriAtomServer → CriAtomの順で初期化しないとCriAtomにCriAtomServerを生成されてしまう. CriAtomServer.CreateInstance(); if (Initializer == null) { // Acfを管理する為自動初期化を無効化. var source = initializerPrefab.Source; var initializerSource = UnityUtility.GetComponent <CriWareInitializer>(source); initializerSource.dontInitializeOnAwake = true; // 生成. Initializer = initializerPrefab.Instantiate <CriWareInitializer>(); Initializer.transform.name = "Initializer"; //======================================================== // ライブラリ初期化(この処理完了後にCRIが有効化される). //======================================================== // 手動管理する為無効化. Initializer.dontDestroyOnLoad = false; // 認証キー. Initializer.decrypterConfig.key = decryptKey; // ファイルハンドルの使用数を節約する為、ファイルアクセスが行われるタイミングでのみハンドルを利用するよう変更. // ※ 逐次オープンとなるためファイルアクセスの性能は低下する. Initializer.fileSystemConfig.numberOfBinders = 65535; Initializer.fileSystemConfig.minimizeFileDescriptorUsage = true; // 同時インストール可能数を設定. Initializer.fileSystemConfig.numberOfInstallers = 65535; // 初期化実行. Initializer.Initialize(); } if (ErrorHandler == null) { var errorHandlerObject = UnityUtility.CreateEmptyGameObject(gameObject, "ErrorHandler"); UnityUtility.SetActive(errorHandlerObject, false); // Awakeが実行されないように非アクティブでAddComponent. ErrorHandler = errorHandlerObject.AddComponent <CriWareErrorHandler>(); ErrorHandler.dontDestroyOnLoad = false; UnityUtility.SetActive(errorHandlerObject, true); } if (!CriWareInitializer.IsInitialized()) { Initializer.Initialize(); } // CriFsServerはライブラリの初期化後に生成. CriFsServer.CreateInstance(); // CriAtomはライブラリの初期化後に生成. var criAtom = gameObject.AddComponent <CriAtom>(); // CriAtomのSetupが隠蔽されているので手動で初期化する. criAtom.acfFile = Initializer.atomConfig.acfFileName; if (!string.IsNullOrEmpty(criAtom.acfFile)) { var acfPath = PathUtility.Combine(global::CriWare.streamingAssetsPath, criAtom.acfFile); acfPath += CriAssetDefinition.AcfExtension; CriAtomEx.RegisterAcf(null, acfPath); } #endif }