public virtual void initKBEngine()
    {
        // 如果此处发生错误,请查看 Assets\Scripts\kbe_scripts\if_Entity_error_use______git_submodule_update_____kbengine_plugins_______open_this_file_and_I_will_tell_you.cs

        KBEngineArgs args = new KBEngineArgs();

        args.ip = ip;
        args.port = port;
        args.clientType = clientType;

        if(persistentDataPath == "Application.persistentDataPath")
            args.persistentDataPath = Application.persistentDataPath;
        else
            args.persistentDataPath = persistentDataPath;

        args.syncPlayer = syncPlayer;
        args.threadUpdateHZ = threadUpdateHZ;

        args.SEND_BUFFER_MAX = (UInt32)SEND_BUFFER_MAX;
        args.RECV_BUFFER_MAX = (UInt32)RECV_BUFFER_MAX;

        args.isMultiThreads = isMultiThreads;

        if(isMultiThreads)
            gameapp = new KBEngineAppThread(args);
        else
            gameapp = new KBEngineApp(args);
    }
        public override bool initialize(KBEngineArgs args)
        {
            base.initialize(args);

            KBEngineAppThread.threadUpdateHZ = args.threadUpdateHZ;
            threadUpdatePeriod = 1000f / threadUpdateHZ;

            kbethread = new KBEThread(this);
            _t = new Thread(new ThreadStart(kbethread.run));
            _t.Start();

            return true;
        }
 public KBEngineAppThread(KBEngineArgs args)
     : base(args)
 {
 }
        public virtual bool initialize(KBEngineArgs args)
        {
            _args = args;

            initNetwork();

            // 注册事件
            installEvents();

            // 允许持久化KBE(例如:协议,entitydef等)
            if(args.persistentDataPath != "")
             	   _persistentInofs = new PersistentInofs(args.persistentDataPath);

             	return true;
        }
        public KBEngineApp(KBEngineArgs args)
        {
            if (app != null)
                throw new Exception("Only one instance of KBEngineApp!");

            app = this;

            initialize(args);
        }