Esempio n. 1
0
    public IEnumerator InitRoutine()
    {
        var assetRes = new AssetResource();

        yield return(StartCoroutine(SGameEngine.ResourceLoader.Instance.load_asset("Assets/" + xc.ResPath.path3,
                                                                                   typeof(TextAsset), assetRes, true, false, string.Empty)));

        var asset = assetRes.asset_ as TextAsset;

        if (asset == null)
        {
            GameDebug.LogError("InitRoutine load_asset failed.");
            yield break;
        }

        var mgr = LuaScriptMgr.Instance;

        mgr.ReloadBytes(asset.bytes);
        assetRes.destroy();

        // 等待1帧,防止一帧内GC对象太多
        yield return(null);

        mgr.Start();
    }
Esempio n. 2
0
        /// <summary>
        /// 加载音效资源
        /// </summary>
        /// <returns></returns>
        IEnumerator LoadAudio(GameObject bind_node, string res_path, bool is_loop)
        {
            AssetResource ar = new AssetResource();

            yield return(ResourceLoader.Instance.StartCoroutine(ResourceLoader.Instance.load_asset(res_path, typeof(Object), ar)));

            if (ar.asset_ == null)
            {
                GameDebug.LogError(string.Format("the res {0} does not exist", res_path));
                yield break;
            }

            if (bind_node != null)
            {
                ResourceUtilEx.Instance.host_res_to_gameobj(bind_node, ar);// 将asset资源的生命周期与GameObject关联起来
                var audio_clip = ar.asset_ as AudioClip;
                if (audio_clip != null)
                {
                    PlayAudio(audio_clip, is_loop);
                }
            }
            else
            {
                ar.destroy();
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 播放音效
        /// </summary>
        /// <param name="effectPath"></param>
        /// <param name="pos"></param>
        /// <returns></returns>
        public IEnumerator PlayAudio(string resPath, EmitInfo emitInfo, uint emitId)
        {
            var ar = new AssetResource();

            yield return(ResourceLoader.Instance.StartCoroutine(ResourceLoader.Instance.load_asset(resPath, typeof(Object), ar)));

            if (ar.asset_ == null)
            {
                GameDebug.LogError(string.Format("the res {0} does not exist", resPath));
                yield break;
            }

            // 如果当前ID发生变化,说明之前的特效播放已经被终止
            if (emitId != mCurEmitId)
            {
                ar.destroy();
                yield break;
            }

            emitInfo.SetAuido(ar);
            var audio_clip = ar.asset_ as AudioClip;

            if (audio_clip != null)
            {
                AudioManager.Instance.PlayAudio(audio_clip, false);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 预加载表格的bundle文件
        /// </summary>
        /// <returns></returns>
        public IEnumerator Preload()
        {
            foreach (var info in mSqliteTableInfos)
            {
                var bundle_path = info.Value.bundle_path;
                if (string.IsNullOrEmpty(bundle_path))
                {
                    continue;
                }

                AssetResource ar = new AssetResource();
                string        full_bundle_path = "Assets/Res/" + bundle_path;
                yield return(MainGame.GlobalMono.StartCoroutine(ResourceLoader.Instance.load_asset(full_bundle_path, typeof(UnityEngine.Object), ar)));

                AssetObject asset_obj = ar.get_obj();
                if (asset_obj == null)
                {
                    GameDebug.LogError(string.Format("Preload table {0} error", bundle_path));
                }
                else
                {
                    var bundl_list = asset_obj.get_dependence_bundles_;
                    if (bundl_list.Count > 0)
                    {
                        info.Value.bundle = bundl_list[0].get_asset_bundle_; // 表格默认只有一个bundle文件
                    }
                    // 连接sqlite表格前会重新加载assetbundle的资源
                    Resources.UnloadAsset(ar.asset_);
                }

                //ar.destroy();
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 加载模型物体
        /// </summary>
        public IEnumerator LoadModel(string res_path)
        {
            AssetResource ar = new AssetResource();

            yield return(ResourceLoader.Instance.StartCoroutine(ResourceLoader.Instance.load_asset(res_path, typeof(Object), ar)));

            if (ar.asset_ == null)
            {
                GameDebug.LogError(string.Format("the res {0} does not exist", res_path));
                yield break;
            }
//             while(true)
//             {
//                 yield return null;
//             }
            if (!m_IsDestory)
            {
                ResourceUtilEx.Instance.host_res_to_gameobj(m_ModelParent, ar);// 将asset资源的生命周期与GameObject关联起来

                GameObject model_object = GameObject.Instantiate(ar.asset_) as GameObject;
                SetModel(model_object);
            }
            else
            {
                ar.destroy();
            }
        }
Esempio n. 6
0
    IEnumerator LoadAndPlayVoice(uint id)
    {
        var    db        = DBManager.Instance.GetDB <DBVoice>();
        string voicePath = db.GetVoicePath(id);

        if (voicePath == "")
        {
            yield break;
        }
        AssetResource ar = new AssetResource();

        yield return(ResourceLoader.Instance.StartCoroutine(ResourceLoader.Instance.load_asset(GlobalConst.ResPath + voicePath, typeof(Object), ar)));

        if (ar.asset_ == null)
        {
            GameDebug.LogError(string.Format("the res {0} does not exist", voicePath));
            yield break;
        }

        GameObject model = GetModelParent();

        if (model == null)
        {
            ar.destroy();
            yield break;
        }
        AudioClip audio_clip = ar.asset_ as AudioClip;

        ResourceUtilEx.Instance.host_res_to_gameobj(model, ar);
        AudioManager.Instance.PlayBattleSFX(audio_clip, SoundType.NPC);

        mPlayVoiceEndTime = Time.time + audio_clip.length;
    }
Esempio n. 7
0
    void OnDestroy()
    {
        mIsDestroy = true;

        if (mAssetRes != null)
        {
            mAssetRes.destroy();
            mAssetRes = null;
        }
    }
Esempio n. 8
0
        protected AssetResource routerResourceDelegate(string url, string uri, string prefix)
        {
            string fileName = Path.GetFileNameWithoutExtension(uri);

            ResourceVO    resourceVO = DataSource.GetResourceVO(prefix, fileName);
            AssetResource resource   = null;

            if (resourceVO != null)
            {
                resource = AssetsManager.getResource(resourceVO.itemPath, LoaderXDataType.EDITORRESOURCE);
            }
            return(resource);
        }
Esempio n. 9
0
        protected virtual void AddDB(IConfigVODB value, bool isForceRemote)
        {
            string uri = value.GetFileName();

            if (string.IsNullOrEmpty(uri) == false)
            {
                string        url      = PathDefine.configPath + uri + "." + extention;
                AssetResource resource = queueLoader.add(url, LoaderXDataType.BYTES, itemComplete);
                resource.userData      = value;
                resource.isForceRemote = isForceRemote;
            }
            dbs.Add(value);
        }
Esempio n. 10
0
        IEnumerator LoadAudioClip(string sound_path, UIPlaySound play_sound)
        {
            AssetResource asset_res = new AssetResource();

            yield return(ResourceLoader.Instance.load_asset(sound_path, typeof(AudioClip), asset_res));

            var audio_clip = asset_res.asset_ as AudioClip;

            if (play_sound != null && audio_clip != null)
            {
                play_sound.audioClip = audio_clip;
                play_sound.ForceClick();// 需要主动调用一次
            }
        }
Esempio n. 11
0
        /// <summary>
        /// 销毁特效的bundle资源
        /// </summary>
        public void Destroy()
        {
            mIsDestroy = true;

            mEffectPrefab = null;

            if (mAssetRes != null)
            {
                mAssetRes.destroy();
                mAssetRes = null;
            }

            mInitCallback.Clear();
        }
        public void TestDeleteResponse()
        {
            var twilioRestClient = Substitute.For <ITwilioRestClient>();

            twilioRestClient.AccountSid.Returns("ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
            twilioRestClient.Request(Arg.Any <Request>())
            .Returns(new Response(
                         System.Net.HttpStatusCode.NoContent,
                         "null"
                         ));

            var response = AssetResource.Delete("ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient);

            Assert.NotNull(response);
        }
Esempio n. 13
0
        public void TestReadEmptyResponse()
        {
            var twilioRestClient = Substitute.For <ITwilioRestClient>();

            twilioRestClient.AccountSid.Returns("ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
            twilioRestClient.Request(Arg.Any <Request>())
            .Returns(new Response(
                         System.Net.HttpStatusCode.OK,
                         "{\"assets\": [],\"meta\": {\"first_page_url\": \"https://serverless.twilio.com/v1/Services/ZS00000000000000000000000000000000/Assets?PageSize=50&Page=0\",\"key\": \"assets\",\"next_page_url\": null,\"page\": 0,\"page_size\": 50,\"previous_page_url\": null,\"url\": \"https://serverless.twilio.com/v1/Services/ZS00000000000000000000000000000000/Assets?PageSize=50&Page=0\"}}"
                         ));

            var response = AssetResource.Read("ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient);

            Assert.NotNull(response);
        }
Esempio n. 14
0
        public bool ProcessRequestAsync(IRequest request, ISchemeHandlerResponse response,
                                        OnRequestCompletedHandler requestCompletedCallback)
        {
            if (AssetProvider.IsLocal(request.Url))
            {
                AssetResource asset = AssetProvider.Get(request.Url);

                response.MimeType       = asset.MimeType;
                response.ResponseStream = asset.Resource;
                requestCompletedCallback.Invoke();
                return(true);
            }

            return(false);
        }
Esempio n. 15
0
        public void TestFetchResponse()
        {
            var twilioRestClient = Substitute.For <ITwilioRestClient>();

            twilioRestClient.AccountSid.Returns("ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
            twilioRestClient.Request(Arg.Any <Request>())
            .Returns(new Response(
                         System.Net.HttpStatusCode.OK,
                         "{\"sid\": \"ZH00000000000000000000000000000000\",\"account_sid\": \"ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"service_sid\": \"ZS00000000000000000000000000000000\",\"friendly_name\": \"test-asset\",\"date_created\": \"2018-11-10T20:00:00Z\",\"date_updated\": \"2018-11-10T20:00:00Z\",\"url\": \"https://serverless.twilio.com/v1/Services/ZS00000000000000000000000000000000/Assets/ZH00000000000000000000000000000000\",\"links\": {\"asset_versions\": \"https://serverless.twilio.com/v1/Services/ZS00000000000000000000000000000000/Assets/ZH00000000000000000000000000000000/Versions\"}}"
                         ));

            var response = AssetResource.Fetch("ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient);

            Assert.NotNull(response);
        }
Esempio n. 16
0
 /// <summary>
 /// 取消之前的loading/销毁资源
 /// </summary>
 /// <param name="loadingId"></param>
 void RemoveLoadingId(uint loadingId)
 {
     if (loadingId != 0)
     {
         AssetResource loadRes = null;
         if (mLoadedAssetRes.TryGetValue(loadingId, out loadRes))
         {
             if (loadRes != null)
             {
                 loadRes.destroy();
                 loadRes = null;
             }
             mLoadedAssetRes.Remove(loadingId);
         }
     }
 }
Esempio n. 17
0
            /// <summary>
            /// 停止特效播放
            /// </summary>
            public void Stop()
            {
                mLifeTime = 0;
                mIsFinish = true;
                if (mEffectObject != null)
                {
                    ObjCachePoolMgr.Instance.RecyclePrefab(mEffectObject, ObjCachePoolType.SFX, mEffectPath);
                    mEffectObject = null;
                }

                if (mAudioRes != null)
                {
                    mAudioRes.destroy();
                    mAudioRes = null;
                }
            }
        public async Task <IActionResult> UpdateAsync(int id, [FromBody] AssetResource resource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }

            var asset  = _mapper.Map <Asset>(resource);
            var result = await _assetService.UpdateAsync(id, asset);

            if (!result.Success)
            {
                return(BadRequest(result.Message));
            }

            var assetResource = _mapper.Map <AssetResource>(result.Asset);

            return(Ok(assetResource));
        }
Esempio n. 19
0
        public void TestFetchRequest()
        {
            var twilioRestClient = Substitute.For <ITwilioRestClient>();
            var request          = new Request(
                HttpMethod.Get,
                Twilio.Rest.Domain.Serverless,
                "/v1/Services/ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Assets/ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
                ""
                );

            twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content"));

            try
            {
                AssetResource.Fetch("ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient);
                Assert.Fail("Expected TwilioException to be thrown for 500");
            }
            catch (ApiException) {}
            twilioRestClient.Received().Request(request);
        }
Esempio n. 20
0
        IEnumerator InitEmitter(string assetPath, int maxCount)
        {
            if (string.IsNullOrEmpty(assetPath))
            {
                GameDebug.LogError("特效Prefab名字为空");
                yield break;
            }

            string ext = "";

            if (string.IsNullOrEmpty(Path.GetExtension(assetPath)))
            {
                ext = ".prefab";
            }

            mAssetPath    = assetPath;
            mInstMaxCount = maxCount;
            mInitCallback.Clear();

            var    assetRes = new AssetResource();
            string fullPath = string.Format("Assets/Res/{0}{1}", mAssetPath, ext);

            yield return(MainGame.HeartBehavior.StartCoroutine(SGameEngine.ResourceLoader.Instance.load_asset(fullPath, typeof(Object), assetRes)));

            // 检查资源是否加载成功
            if (assetRes.asset_ == null)
            {
                GameDebug.LogError("Init emitter error, can not load prefab " + mAssetPath);
                yield break;
            }

            // 检查组件是否销毁
            if (mIsDestroy)
            {
                assetRes.destroy();
                yield break;
            }

            mAssetRes = assetRes;
            OnObjectLoaded(mAssetRes.asset_);
        }
Esempio n. 21
0
        public void TestUpdateRequest()
        {
            var twilioRestClient = Substitute.For <ITwilioRestClient>();
            var request          = new Request(
                HttpMethod.Post,
                Twilio.Rest.Domain.Serverless,
                "/v1/Services/ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Assets/ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
                ""
                );

            request.AddPostParam("FriendlyName", Serialize("friendlyName"));
            twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content"));

            try
            {
                AssetResource.Update("ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "friendlyName", client: twilioRestClient);
                Assert.Fail("Expected TwilioException to be thrown for 500");
            }
            catch (ApiException) {}
            twilioRestClient.Received().Request(request);
        }
Esempio n. 22
0
        /// <summary>
        /// 加载音效资源
        /// </summary>
        /// autoDestroy 加载完自动设置保底过期时间 5分钟
        /// <returns></returns>
        public IEnumerator LoadSFXAudio(string res_path, SoundType type, uint id, UnityAction <AudioClip> callback = null, bool autoDestroy = true)
        {
            AssetResource ar = new AssetResource();

            yield return(ResourceLoader.Instance.StartCoroutine(ResourceLoader.Instance.load_asset(res_path, typeof(Object), ar)));

            if (ar.asset_ == null)
            {
                GameDebug.LogError(string.Format("the res {0} does not exist", res_path));
                yield break;
            }

            AudioClip audio_clip = ar.asset_ as AudioClip;

            if (audio_clip == null)
            {
                GameDebug.LogError(string.Format("the res {0} is not audio clip", res_path));
                ar.destroy();
                yield break;
            }
            if (mLoadedAudioAsset.ContainsKey(id))
            {
                ar.destroy();
                yield break;
            }
            mLoadedAudioAsset.Add(id, ar);

            if (autoDestroy)
            {
                DestroySFX(id, AUDIO_ASSET_MAX_LIFE_TIME);
            }

            if (callback != null)
            {
                callback(audio_clip);
                yield break;
            }

            PlayBattleSFX(audio_clip, type, id);
        }
Esempio n. 23
0
    /// <summary>
    /// 根据参数来加载模型
    /// </summary>
    /// <returns></returns>
    IEnumerator LoadModel()
    {
        if (mAssetRes != null)
        {
            mAssetRes.destroy();
        }

        mAssetRes = new AssetResource();
        yield return(ResourceLoader.Instance.load_asset(ResPath, typeof(GameObject), mAssetRes));

        if (mIsDestroy)
        {
            yield break;
        }

        if (mAssetRes.asset_ == null)
        {
            yield break;
        }

        var game_object = GameObject.Instantiate(mAssetRes.asset_) as GameObject;
        var trans       = game_object.transform;

        trans.SetParent(mCacheTrans, false);

        trans.localPosition    = LocalPos;
        trans.localScale       = LocalScale;
        trans.localEulerAngles = LocalEuler;

        // 动作
        Animator ani = game_object.GetComponent <Animator>();

        if (null != ani && !string.IsNullOrEmpty(ModelAction))
        {
            ani.Play(ModelAction);
        }

        xc.ui.ugui.UIHelper.SetLayer(trans, LayerMask.NameToLayer("UI"));
    }
Esempio n. 24
0
        protected virtual void itemComplete(EventX e)
        {
            AssetResource resource = e.target as AssetResource;

            if (e.type != EventX.COMPLETE)
            {
                this.simpleDispatch(EventX.ERROR, "有加载文件失败:" + e.data);
                return;
            }

            IConfigVODB danager = resource.userData as IConfigVODB;

            if (danager != null)
            {
                byte[]       buffer        = e.data as byte[];
                MemoryStream _memoryStream = new MemoryStream();
                _memoryStream.Write(buffer, 0, buffer.Length);
                _memoryStream.Position = 0;

                addParseItem(danager, _memoryStream);
            }
        }
Esempio n. 25
0
        /// <summary>
        /// 加载资源的协程
        /// </summary>
        /// <param name="image"></param>
        /// <param name="assetPath"></param>
        /// <param name="loadingId"></param>
        /// <returns></returns>
        IEnumerator LoadTexture(RawImage image, string assetPath, uint loadingId)
        {
            var assetRes = new AssetResource();

            yield return(MainGame.HeartBehavior.StartCoroutine(ResourceLoader.Instance.load_asset(assetPath, typeof(UnityEngine.Object), assetRes)));

            // 检查加载的资源是否正常
            var assetObject = assetRes.asset_;

            if (assetObject == null)
            {
                mLoadedAssetRes.Remove(loadingId);
                yield break;
            }

            // 检查组件和image等是否已经销毁
            Texture buffTex = assetObject as Texture;

            if (image == null || buffTex == null)
            {
                mLoadedAssetRes.Remove(loadingId);
                assetRes.destroy();
                yield break;
            }

            // 检查待加载字典中是否存在loadingid
            if (mLoadedAssetRes.ContainsKey(loadingId))
            {
                mLoadedAssetRes[loadingId] = assetRes;
                image.texture = buffTex;
                image.color   = Color.white;
            }
            else
            {
                assetRes.destroy();
            }
        }
Esempio n. 26
0
        public static IEnumerator EnterGame()
        {
            // 预加载资源
            ControlServerLogHelper.Instance.PostPlayerFollowRecord(PlayerFollowRecordSceneId.PreloadResStart, "", false);

#if UNITY_EDITOR
            MikuLuaProfiler.HookLuaSetup.OnStartGame();
#endif

            // 创建Core物体
            mCoreObject = new GameObject("Core");
            GameObject.DontDestroyOnLoad(mCoreObject);

            // 实例化Game
            Game mGame = Game.GetInstance();
            mHeartBehavior = mCoreObject.AddComponent <Heart>();
            AssemblyBridge.Instance.TimelinePlayableEmployee = new TimelinePlayableEmployee();

            ClientEventMgr.GetInstance();

            // 增加各种Component
            var resource_loader = mCoreObject.AddComponent <ResourceLoader>();
            resource_loader.BundleVersion    = NewInitSceneLoader.Instance.BundleVersion;
            resource_loader.ServerBundleInfo = NewInitSceneLoader.Instance.g_server_bundle_info;

            mCoreObject.AddComponent <ResourceUtilEx> ();
            ResourceLoader.Instance.init();
            mCoreObject.AddComponent <ObjCachePoolMgr>();

            // 因为部分表格资源放在bundle资源中,因此要尽早进行加载
            yield return(GlobalMono.StartCoroutine(DBTableManager.Instance.Preload()));

            mCoreObject.AddComponent <ActorManager>();
            HttpRequest.Instance = mCoreObject.AddComponent <HttpRequest>();
            mCoreObject.AddComponent <QuadTreeSceneManager>();
            mCoreObject.AddComponent <PushManager>();
            xc.RedPointDataMgr.GetInstance();   //小红点实例化
            xc.LockIconDataMgr.GetInstance();
            xc.NewMarkerDataMgr.GetInstance();  //New标记
#if !DISABLE_LUA
            //mCoreObject.AddComponent<LuaClient>().Init();
            LuaClient luaClient = mCoreObject.AddComponent <LuaClient>();
            yield return(GlobalMono.StartCoroutine(luaClient.InitRoutine()));
#endif

#if (TEST_HOST && !PERFORMANCE_TEST) || HD_RESOURCE
            //mCoreObject.AddComponent<DebugFPS>();// 因为gc的问题暂时屏蔽
            mDebugUI = mCoreObject.AddComponent <DebugUI>();
            mDebugUI.UnsubscribeAllProcessCmd();
            mDebugUI.SubscribeProcessCmd(DebugCommand.OnProcessCmd);
            //测试环境打开DebugWindow,取消仅在编辑器打开的判断
            //#if UNITY_EDITOR
            var window = GameObject.Instantiate(Resources.Load <GameObject>("Debug/DebugWindow"));

            GameObject.DontDestroyOnLoad(window);
            debugWindow = window.AddComponent <DebugWindow>();
            //#endif
#endif

            CullManager.Instance.Factor = 1.0f;

            QualitySetting.DeviceAdaptation();

            AssetResource ar = new AssetResource();
            // 加载混音设置
            yield return(GetGlobalMono().StartCoroutine(ResourceLoader.Instance.load_asset("Assets/Res/Sound/AudioMixer.mixer", typeof(UnityEngine.Object), ar)));

            AudioManager.Instance.InitMixer(ar.asset_ as AudioMixer);
            AudioSource audio = mCoreObject.AddComponent <AudioSource>();
            audio.playOnAwake           = true;
            audio.loop                  = true;
            audio.outputAudioMixerGroup = AudioManager.Instance.GetAudioMixerGroup("Music");


            BackGroundAudio backAudio = mCoreObject.AddComponent <BackGroundAudio>();
            backAudio.Init();

            if (Const.Language != LanguageType.SIMPLE_CHINESE)
            {
                string localizeData = LocalizeManager.Instance.GetLocalizationDataPath(Const.Language);
                yield return(GetGlobalMono().StartCoroutine(GameLocalizeHelper.CoLoadLocalizeFile(localizeData)));
            }

            // 加载Font
            ar = new AssetResource();
            yield return(GetGlobalMono().StartCoroutine(ResourceLoader.Instance.load_asset("Assets/Res/UI/Textures/Emoji/Output/emoji.txt", typeof(UnityEngine.Object), ar)));

            mEmojiTxt = ar.asset_;
            if (mEmojiTxt == null)
            {
                Debug.LogError("emmoji.txt load failed.");
            }
            ar = new AssetResource();
            yield return(GetGlobalMono().StartCoroutine(ResourceLoader.Instance.load_asset(EmojiText.GetEmojiTextName(EmojiText.EmojiMaterialType.EquipTips), typeof(UnityEngine.Object), ar)));

            mEmojiTxt_equipTips = ar.asset_;
            if (mEmojiTxt_equipTips == null)
            {
                Debug.LogError("emoji_equipTips.txt load failed.");
            }

            // 加载UIMain,程序中只加载一次
            PrefabResource pr = new PrefabResource();
            yield return(GetGlobalMono().StartCoroutine(ResourceLoader.Instance.load_prefab("Assets/Res/UI/Widget/Preset/UIRoot.prefab", pr, false)));

            pr.obj_.transform.position = new Vector3(0, 1000.0f, 0);
            GameObject.DontDestroyOnLoad(pr.obj_);
            mGame.Init();

            // 加载Start场景
            if (Game.Instance.IsSkillEditorScene)
            {
                var scene_asset_path = string.Format("Assets/Res/Map/scenes/{0}.unity", GlobalConst.DefaultTestScene);
                yield return(GetGlobalMono().StartCoroutine(ResourceLoader.Instance.load_scene(scene_asset_path, GlobalConst.DefaultTestScene, null)));
            }

            // destroy initscenloader
            GameObject.DestroyImmediate(NewInitSceneLoader.Instance.gameObject, true);

            // 初始化Game的状态机
            mGame.InitFSM();
            mGame.mIsInited = true;

            Application.targetFrameRate = Const.G_FPS;

            var fps_respond = mCoreObject.AddComponent <FPSRespond>();
            fps_respond.FPSUpdateWaitTime = 15.0f;

            var fps_notice = mCoreObject.AddComponent <FPSNotice>();

            // 预加载资源
            ControlServerLogHelper.Instance.PostPlayerFollowRecord(PlayerFollowRecordSceneId.PreloadResEnd);
            ControlServerLogHelper.Instance.PostCloudLadderEventAction(CloudLadderMarkEnum.load_res);

            // 向后台请求渠道信息列表和服务器列表
#if !UNITY_IPHONE
            ControlServerLogHelper.Instance.GetChannelList();
#endif
            ControlServerLogHelper.Instance.GetServerList();
        }
Esempio n. 27
0
 /// <summary>
 /// 设置音效资源
 /// </summary>
 /// <param name="ar"></param>
 public void SetAuido(AssetResource ar)
 {
     mAudioRes = ar;
 }
Esempio n. 28
0
    public void Update()
    {
        if (TargetActor == null)
        {
            TargetActor = Game.Instance.GetLocalPlayer();
        }

        if (TargetActor != null)
        {
            var allBuffs = TargetActor.BuffCtrl.AllBuffs; // 获取主角身上所有的buff数据

            bool buff_list_change = false;                // buff的列表是否发生了变化


            var idList = SGameEngine.Pool <uint> .List.New(allBuffs.Count);

            using (var enumerator = allBuffs.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    var cur    = enumerator.Current;
                    var buffId = cur.Key;
                    idList.Add(buffId);
                }
            }

            idList.Sort();
            int i = 0;
            foreach (var buffId in idList)
            {
                if (i >= mBuffMaxCount)
                {
                    continue;
                }

                // 获取buff对象的icon
                var buff = allBuffs[buffId];
                if (string.IsNullOrEmpty(buff.OwnBuffInfo.icon))
                {
                    continue;
                }

                // 当上次缓存的id与本次不同时,重设buff图标
                if (i >= mBuffIds.Count || mBuffIds[i] != buffId)
                {
                    // 取消之前的loading/销毁资源
                    var loadingId = mBuffWidgets[i].LoadingId;
                    if (loadingId != 0)
                    {
                        AssetResource loadRes = null;
                        if (mLoadedAssetRes.TryGetValue(loadingId, out loadRes))
                        {
                            if (loadRes != null)
                            {
                                loadRes.destroy();
                                loadRes = null;
                            }
                            mLoadedAssetRes.Remove(loadingId);
                        }
                    }

                    // 获取新的loadingid
                    if (mLoadingId == 0)
                    {
                        mLoadingId++;
                    }
                    mBuffWidgets[i].LoadingId = mLoadingId;

                    string iconPath = string.Format("{0}/{1}.png", GlobalConst.BuffIconFolder, buff.OwnBuffInfo.icon);
                    var    assetRes = new AssetResource();
                    mLoadedAssetRes[mLoadingId] = null;
                    MainGame.HeartBehavior.StartCoroutine(LoadBuffIcon(mBuffWidgets[i].BuffImage, assetRes, iconPath, mLoadingId));

                    mLoadingId++;
                    buff_list_change = true;
                }

                CommonTool.SetActive(mBuffWidgets[i].WidgetObject, true);
                i++;
            }
            SGameEngine.Pool <uint> .List.Free(idList);

            // 数量不同的时候即表示buff列表发生了变化
            if (i != mBuffIds.Count)
            {
                buff_list_change = true;
            }

            // 隐藏没有buff数据的ui
            for (; i < mBuffMaxCount; ++i)
            {
                CommonTool.SetActive(mBuffWidgets[i].WidgetObject, false);

                // 取消之前的loading/销毁资源
                RemoveLoadingId(mBuffWidgets[i].LoadingId);
                mBuffWidgets[i].LoadingId = 0;
            }

            // 获取最新的buffid列表
            mBuffIds.Clear();
            using (var enumerator = allBuffs.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    var cur  = enumerator.Current;
                    var buff = cur.Value;
                    if (!string.IsNullOrEmpty(buff.OwnBuffInfo.icon))// 只取出没有叠加的进行显示
                    {
                        mBuffIds.Add(cur.Key);
                    }
                }
            }
            mBuffIds.Sort();

            if (buff_list_change)
            {
                // 因为ui动画的问题,需要重新设置layout
                LayoutRebuilder.ForceRebuildLayoutImmediate(mRectTrans);
                ClientEventMgr.Instance.FireEvent((int)ClientEvent.CE_BUFF_LIST_CHANGE, new CEventBaseArgs(TargetActor));
            }
        }
        else
        {
            // 隐藏没有buff数据的ui
            for (int i = 0; i < mBuffMaxCount; ++i)
            {
                CommonTool.SetActive(mBuffWidgets[i].WidgetObject, false);

                RemoveLoadingId(mBuffWidgets[i].LoadingId);
                mBuffWidgets[i].LoadingId = 0;
            }

            // 清除缓存数据
            mBuffIds.Clear();
        }
    }
Esempio n. 29
0
        private static IEnumerator ChangePart(GameObject model, uint partId, bool isLocalPlayer = true)
        {
            if (model == null)
            {
                yield break;
            }

            DBAvatarPart.Data data      = DBManager.Instance.GetDB <DBAvatarPart>().mData[partId];
            string            part_name = data.part == DBAvatarPart.BODY_PART.BODY ? xc.AvatarCtrl.BODY_NAME : xc.AvatarCtrl.WEAPON_NAME;

            // 查找旧资源中的换装节点
            Transform old_part = CommonTool.FindChildInHierarchy(model.transform, part_name);

            if (old_part == null)
            {
                Debug.LogError(string.Format("the model {0} does not have a part named {1}", model.name, part_name));
                yield break;
            }
            string path = data.SuitablePath(isLocalPlayer);
            // 加载换装部件的模型
            AssetResource ar = new AssetResource();

            yield return(ResourceLoader.Instance.StartCoroutine(ResourceLoader.Instance.load_asset(string.Format("{0}/{1}.prefab", xc.AvatarCtrl.AVATAR_PATH_PREFIX, path), typeof(GameObject), ar)));

            GameObject gameObjectAsset = ar.asset_ as GameObject;

            if (gameObjectAsset == null)
            {
                Debug.LogError(string.Format("the res {0} does not exist", path));
                yield break;
            }

            if (model == null)
            {
                ar.destroy();
                yield break;
            }

            old_part = CommonTool.FindChildInHierarchy(model.transform, part_name);
            if (old_part == null)
            {
                Debug.LogError(string.Format("the model {0} does not have a part named {1}", model.name, part_name));
                ar.destroy();
                yield break;
            }

            // 将asset资源的生命周期与角色GameObject关联起来
            ResourceUtilEx.Instance.host_res_to_gameobj(model, ar);

            // 查找新资源的换装节点
            Transform new_part = CommonTool.FindChildInHierarchy(gameObjectAsset.transform, part_name);

            if (new_part == null)
            {
                Debug.LogError(string.Format("the model {0} does not have a part named {1}", gameObjectAsset.name, part_name));
                yield break;
            }

            SkinnedMeshRenderer new_mesh_renderer = new_part.GetComponent <SkinnedMeshRenderer>();
            SkinnedMeshRenderer old_mesh_renderer = old_part.GetComponent <SkinnedMeshRenderer>();

            Transform[] old_bones = (Transform[])old_part.GetComponent <SkinnedMeshRenderer>().bones.Clone();
            ReplaceSkinnedMesh(old_bones, model, old_mesh_renderer, new_mesh_renderer);
        }
Esempio n. 30
0
            //--------------------------------------------------------
            //  内部调用
            //--------------------------------------------------------
            IEnumerator WaitActorLoad()
            {
                while (CreateActorScene.Instance == null || CreateActorScene.Instance.LoadFinish == false || CreateActorScene.Instance.TimelinesIsLoadFinished == false)
                {
                    yield return(null);
                }

                var isAuditAndIos = AuditManager.Instance.AuditAndIOS();

                if (!isAuditAndIos || (isAuditAndIos && !SDKHelper.GetSwitchModel()))
                {
                    var preload_infos = DBPreloadInfo.Instance.PreloadInfos;
                    if (preload_infos.Count > 0)
                    {
                        mPreloadAssetResource.Clear();
                        foreach (var info in preload_infos)
                        {
                            var object_asset = new AssetResource();
                            mPreloadAssetResource.Add(object_asset);
                            MainGame.HeartBehavior.StartCoroutine(SGameEngine.ResourceLoader.Instance.load_asset("Assets/" + info.asset_path, typeof(UnityEngine.Object), object_asset));
                        }

                        float star_wait_time = Time.unscaledTime;

                        // 等待所有资源加载完毕
                        while (true)
                        {
                            // 最多等待20s
                            if (Time.unscaledTime - star_wait_time > 20.0f)
                            {
                                Debug.LogError("WaitActorLoad: wait preload asset for long time");
                                break;
                            }

                            bool all_loaded = true;
                            foreach (var info in mPreloadAssetResource)
                            {
                                if (info.asset_ == null)
                                {
                                    all_loaded = false;
                                    break;
                                }
                            }

                            if (all_loaded)
                            {
                                break;
                            }
                            else
                            {
                                yield return(null);
                            }
                        }
                    }
                }

                if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel())
                {
                    GameObjectControl control = Game.Instance.GameObjectControl;
                    if (control != null)
                    {
                        if (control.scene != null && control.uiPanel != null)
                        {
                            control.scene.SetActive(!AuditManager.Instance.Open);
                            control.uiPanel.SetActive(AuditManager.Instance.Open);
                        }
                    }
                }

                //int[] actorList = new int[] { 2, 1, 3 };
                if (AuditManager.Instance.AuditAndIOS())
                {
                    List <uint> actorList = SDKHelper.GetRoleList();
                    if (actorList != null && actorList.Count >= 1)
                    {
                        mDefaultSelectIndex = (int)actorList[0];
                    }
                }

                OnClickActorBtn((uint)mDefaultSelectIndex);

                // 等待一帧才隐藏loading界面,避免播放剧情前穿帮
                mHideLoadingBKCoroutine = MainGame.HeartBehavior.StartCoroutine(EndFrameHideLoadingBK());
            }