public void OnDisable()
 {
     if (instance == this)
     {
         instance = null;
     }
 }
        private void Start()
        {
            if (!isOnline)
            {
                return;
            }

            DontDestroyOnLoad(this);
            UnityThread.initUnityThread();

            if (isSelfInitOnPlay)
            {
                StartConnection();
            }
        }
        //Used to initialize UnityThread. Call once before any function here
        public static void initUnityThread(bool visible = false)
        {
            if (instance != null)
            {
                return;
            }

            if (Application.isPlaying)
            {
                // add an invisible game object to the scene
                GameObject obj = new GameObject("MainThreadExecuter");
                if (!visible)
                {
                    obj.hideFlags = HideFlags.HideAndDontSave;
                }

                DontDestroyOnLoad(obj);
                instance = obj.AddComponent <UnityThread>();
            }
        }