/// <summary>
        /// CPK のDownload~Bind までの処理
        /// LoadFileの途中処理としての利用や、CueSheet取得用などに用いると思われ
        /// </summary>
        /// <param name="_cpkName"></param>
        /// <param name="_onComplete"></param>
        /// <returns></returns>
        private IEnumerator LoadCPK(string _cpkName, string _versionHashName, OnCompleteBind _onComplete)
        {
            /*
             * ------------------------------
             * フロー
             * 1. Cache に無ければDownload -> Cache に保存
             * 2. Cache にあるCPKファイルをBind
             * ------------------------------
             */

            // Cache上に無い
            if (!CriPackageCacheController.IsCached(_cpkName, _versionHashName))
            {
                // Download すべきか、サーバー上のファイルを直接バインドすべきかは要検討
                yield return m_dlCtrl.DonwloadCPK(_cpkName, _versionHashName, null);

                //TODO: Retry 対応
            }

            // Dictionary未登録であればCache 上にあるCPKファイルをバインド
            if (!BindDict.ContainsKey(_cpkName))
            {
                yield return(BindCPK(_cpkName, _versionHashName));
            }

            BinderData data = null;
            bool       ret  = BindDict.TryGetValue(_cpkName, out data);

            if (_onComplete != null)
            {
                // Load 成功したので参照しているはず
                if (ret && data != null)
                {
                    data.SetReference();
                }
                _onComplete.Invoke(ret, data);
            }
        }
        /// <summary>
        /// CPK ファイルのロード窓口
        /// </summary>
        /// <param name="_cpkName"></param>
        /// <param name="_onComplete"></param>
        /// <returns></returns>
        public IEnumerator LoadCPK(string _cpkName, OnCompleteBind _onComplete)
        {
            string version = GetVersionName(_cpkName);

            yield return(LoadCPK(_cpkName, version, _onComplete));
        }