Ejemplo n.º 1
0
        /// <summary>
        /// 注销逻辑消息
        /// </summary>
        public static void UnRegisterLogicMsg(this IMsgReceiver self, string msgName, VoidDelegate.WithParams callback)
        {
            if (string.IsNullOrEmpty(msgName))
            {
                QPrint.FrameworkError("UnRegisterMsg is Null or Empty");
                return;
            }

            if (null == callback)
            {
                QPrint.FrameworkError("RegisterMsg callback is Null");
                return;
            }

            var handlers = mMsgHandlerDict [msgName];

            int handlerCount = handlers.Count;

            // 删除List需要从后向前遍历
            for (int index = handlerCount - 1; index >= 0; index--)
            {
                var handler = handlers [index];
                if (handler.receiver == self && handler.callback == callback)
                {
                    handlers.Remove(handler);
                    break;
                }
            }
        }
Ejemplo n.º 2
0
 void ReceiverMsg(params object[] paramList)
 {
     foreach (var sth in paramList)
     {
         QPrint.Warn(sth.ToString());
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 异步释放资源内部实现
        /// </summary>
        /// <returns></returns>
        IEnumerator InternalUnloadAsync()
        {
            if (APP_CONFIG.DEBUG)
            {
                QPrint.FrameworkWarn("Unload in ResMgr");
            }
            AsyncOperation opt = Resources.UnloadUnusedAssets();

            yield return(opt);
        }
Ejemplo n.º 4
0
        public void PreloadMusic(string path, int id)
        {
            QTest.TimeBegan(path);

            ResMgr.Instance().LoadRes(path, delegate(string resName, Object resObj) {
                if (resObj)
                {
                    if (APP_CONFIG.DEBUG)
                    {
                        QPrint.Warn("loaded: " + path + " " + id.ToString() + "time:" + QTest.TimeStop(path));
                    }
                    musicClips[id] = resObj as AudioClip;
                }
            });
        }
Ejemplo n.º 5
0
        public void Off()
        {
            if (APP_CONFIG.DEBUG)
            {
                QPrint.Warn("Sound Off");
            }
            listener.enabled = false;
            DataManager.Instance().soundState = SOUND.OFF;
            soundState = SOUND.OFF;

            var audios = GetComponents <AudioSource> ();

            for (int i = 0; i < audios.Length; i++)
            {
                audios [i].volume = 0.0f;
            }
        }
Ejemplo n.º 6
0
        public static T Instance()
        {
            if (instance == null)
            {
                instance = FindObjectOfType <T>();

                if (FindObjectsOfType <T>().Length > 1)
                {
                    if (APP_CONFIG.DEBUG)
                    {
                        QPrint.FrameworkError("More than 1!");
                    }
                    return(instance);
                }

                if (instance == null)
                {
                    string instanceName = typeof(T).Name;
                    if (APP_CONFIG.DEBUG)
                    {
                        QPrint.FrameworkLog("Instance Name: " + instanceName);
                    }
                    GameObject instanceGO = GameObject.Find(instanceName);

                    if (instanceGO == null)
                    {
                        instanceGO = new GameObject(instanceName);
                    }
                    instance = instanceGO.AddComponent <T>();
                    DontDestroyOnLoad(instanceGO);                      // 不会被释放
                    if (APP_CONFIG.DEBUG)
                    {
                        QPrint.FrameworkLog("Add New Singleton " + instance.name + " in Game!");
                    }
                }
                else
                {
                    if (APP_CONFIG.DEBUG)
                    {
                        QPrint.FrameworkLog("Already exist: " + instance.name);
                    }
                }
            }

            return(instance);
        }
Ejemplo n.º 7
0
        public void On()
        {
            if (APP_CONFIG.DEBUG)
            {
                QPrint.Warn("Sound On");
            }
            listener.enabled = true;
            DataManager.Instance().soundState = SOUND.ON;
            soundState         = SOUND.ON;
            musicPlayer.volume = 1.0f;

            var audios = GetComponents <AudioSource> ();

            for (int i = 0; i < audios.Length; i++)
            {
                audios [i].volume = 1.0f;
            }
        }
Ejemplo n.º 8
0
 public void PlayMusic(int id, bool loop = true)
 {
     if (APP_CONFIG.DEBUG)
     {
         QPrint.Warn(id + "" + loop);
     }
     musicPlayer.loop = loop;
     musicPlayer.clip = musicClips [id];
     if (soundState == SOUND.ON)
     {
         musicPlayer.volume = 1.0f;
     }
     else
     {
         musicPlayer.volume = 0.0f;
     }
     musicPlayer.Play();
 }
Ejemplo n.º 9
0
        /// <summary>
        /// 读一张表
        /// </summary>
        public IEnumerator LoadTable(string name)
        {
            System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
            watch.Start();
            TextAsset textAsset = Resources.Load(PATH + name, typeof(TextAsset)) as TextAsset;

            if (APP_CONFIG.DEBUG)
            {
                QPrint.Warn(textAsset.name);
            }
            mCachedTables.Add(textAsset.name, new CSVTable(textAsset.text));
            watch.Stop();

            if (APP_CONFIG.DEBUG)
            {
                QPrint.Warn("time:" + watch.ElapsedMilliseconds);
            }
            yield return(0);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 注册消息,
        /// 注意第一个参数,使用了C# this的扩展,
        /// 所以只有实现IMsgReceiver的对象才能调用此方法
        /// </summary>
        public static void RegisterLogicMsg(this IMsgReceiver self, string msgName, VoidDelegate.WithParams callback)
        {
            // 略过
            if (string.IsNullOrEmpty(msgName))
            {
                QPrint.FrameworkWarn("RegisterMsg:" + msgName + " is Null or Empty");
                return;
            }

            // 略过
            if (null == callback)
            {
                QPrint.FrameworkWarn("RegisterMsg:" + msgName + " callback is Null");
                return;
            }

            // 略过
            if (!mMsgHandlerDict.ContainsKey(msgName))
            {
                mMsgHandlerDict [msgName] = new List <LogicMsgHandler> ();
            }

            // 看下这里
            var handlers = mMsgHandlerDict [msgName];

            // 略过
            // 防止重复注册
            foreach (var handler in handlers)
            {
                if (handler.receiver == self && handler.callback == callback)
                {
                    QPrint.FrameworkWarn("RegisterMsg:" + msgName + " ayready Register");
                    return;
                }
            }

            // 再看下这里
            handlers.Add(new LogicMsgHandler(self, callback));
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 发送消息
        /// 注意第一个参数
        /// </summary>
        public static void SendLogicMsg(this IMsgSender sender, string msgName, params object[] paramList)
        {
            // 略过,不用看
            if (string.IsNullOrEmpty(msgName))
            {
                QPrint.FrameworkError("SendMsg is Null or Empty");
                return;
            }

            // 略过,不用看
            if (!mMsgHandlerDict.ContainsKey(msgName))
            {
                QPrint.FrameworkWarn("SendMsg is UnRegister");
                return;
            }

            // 开始看!!!!
            var handlers = mMsgHandlerDict[msgName];


            var handlerCount = handlers.Count;

            // 之所以是从后向前遍历,是因为  从前向后遍历删除后索引值会不断变化
            // 参考文章,http://www.2cto.com/kf/201312/266723.html
            for (int index = handlerCount - 1; index >= 0; index--)
            {
                var handler = handlers[index];

                if (handler.receiver != null)
                {
                    QPrint.FrameworkLog("SendLogicMsg:" + msgName + " Succeed");
                    handler.callback(paramList);
                }
                else
                {
                    handlers.Remove(handler);
                }
            }
        }
Ejemplo n.º 12
0
 public GameObject LoadUIPrefabSync(string uiName)
 {
     QPrint.FrameworkWarn("Prefab/UI/" + uiName);
     return(Resources.Load <GameObject>("Prefab/UI/" + uiName));
 }