public void Init(MainMenuController mainMenuController, Photon.Realtime.Player player, BasePool pool) { this.mainMenuController = mainMenuController; lC = SettingsController.instance.languageController; this.player = player; this.pool = pool; SubscribeEvents(); kickButton.SetActive(!player.IsLocal && PhotonNetwork.LocalPlayer.IsMasterClient); readyButton.GetComponent <Toggle>().interactable = player.IsLocal; int sameNamePlayers = PhotonNetwork.CurrentRoom.Players.Where(p => p.Value.NickName.Equals(PhotonNetwork.LocalPlayer.NickName)).Count(); playerNickname.text = sameNamePlayers > 1 ? player.NickName + (sameNamePlayers - 1) : player.NickName; if (player.CustomProperties.ContainsKey("Room_PlayerReady")) { readyText.text = (bool)player.CustomProperties["Room_PlayerReady"] ? lC.GetWord("READY") : lC.GetWord("NOT_READY"); readyButton.GetComponent <Toggle>().isOn = (bool)player.CustomProperties["Room_PlayerReady"]; } else { readyButton.GetComponent <Toggle>().isOn = false; readyText.text = lC.GetWord("NOT_READY"); } if (player.IsLocal) { readyButton.GetComponent <Toggle>().isOn = false; PlayerReady(false); } }
//public static BulletManager Instance; //void Awake() //{ // Instance = this; //} /// <summary> /// 发射子弹 /// </summary> /// <param name="bulletModel"></param> /// <param name="pool"></param> public void DoShoot(BulletModel bulletModel, BasePool pool) { int num = bulletModel.Count / 2; for (int i = 0; i < bulletModel.Count; i++) { GameObject go = pool.Get(bulletModel.InitPosition, bulletModel.LifeTime); //从对象池中获取 // 初始位置即enemy当前位置 BulletMove bulletMove = go.GetComponent <BulletMove>(); var render = go.GetComponent <MeshRenderer>(); if (render != null) { go.GetComponent <MeshRenderer>().material?.SetColor("_EmissionColor", bulletModel.Color); } bulletMove.BulletSpeed = bulletModel.Speed; bulletMove.DelayTime = bulletModel.DelayTime; if (bulletModel.Count % 2 == 1) { go.transform.rotation = bulletModel.Direction * Quaternion.Euler(0, 0, -(bulletModel.Angle * num)); // 绕Z轴旋转 , 要带负号 go.transform.position = go.transform.position + go.transform.right * num * bulletModel.Distance; num--; } else { go.transform.rotation = bulletModel.Direction * Quaternion.Euler(0, 0, -(bulletModel.Angle / 2 + bulletModel.Angle * (num - 1))); // 绕Z轴旋转 go.transform.position = go.transform.position + go.transform.right * ((num - 1) * bulletModel.Distance + bulletModel.Distance / 2); num--; } go.transform.position = go.transform.position + go.transform.forward * bulletModel.ShiftInitPos; } }
void TestPool(BasePool pool) { List <PoolMe> activeObjects = new List <PoolMe>(objCount); Stopwatch watch = new Stopwatch(); watch.Start(); // Perform a repeating test of getting pooled objects and putting them back for (int i = 0; i < testCount; ++i) { // Get and "use" all items in the pool for (int j = 0; j < objCount; ++j) { activeObjects.Add(pool.GetPooledObject()); } // Put all items back in the pool for (int j = objCount - 1; j >= 0; --j) { pool.ReturnPooledObject(activeObjects[j]); activeObjects.RemoveAt(j); } } watch.Stop(); UnityEngine.Debug.Log(string.Format("Completed {0} in {1} ms", pool.GetType().Name, watch.Elapsed.Milliseconds)); }
/// <summary> /// allocate correct pool type and add it to types /// </summary> internal static AbstractStoragePool newPool(string name, AbstractStoragePool superPool, List <AbstractStoragePool> types) { try { switch (name) { case "properties": return(superPool = new P0(types.Count)); case "system": return(superPool = new P1(types.Count, (P0)superPool)); default: if (null == superPool) { return(superPool = new BasePool <SkillObject>(types.Count, name, AbstractStoragePool.noKnownFields, AbstractStoragePool.NoAutoFields)); } else { return(superPool = superPool.makeSubPool(types.Count, name)); } } } finally { types.Add(superPool); } }
public void PreInit(MainMenuController mainMenuController) { this.mainMenuController = mainMenuController; basePool = new BasePool(content, template, Keys.Menu.MAX_PLAYERS_COUNT); basePool.Init(); }
public void Init(RoomInfo roomInfo, PlayPanel playPanel, BasePool pool, MainMenuController mainMenuController) { this.mainMenuController = mainMenuController; this.roomInfo = roomInfo; this.pool = pool; this.playPanel = playPanel; Refresh(); }
public void PreInit(UIPanels UIPanels) { this.UIPanels = UIPanels; playerListings = new List <IngamePlayerListing>(); basePool = new BasePool(content, template, Keys.Menu.MAX_PLAYERS_COUNT); basePool.Init(); gc = GameplayController.instance; }
public void PreInit(UIPanels UIPanels) { this.UIPanels = UIPanels; buildingListings = new List <BuildingListing>(); buildingsPool = new BasePool(buildingsInfoHolder, buildingListing, Keys.Board.PLACE_COUNT / 2); buildingsPool.Init(); lC = SettingsController.instance.languageController; }
public virtual void PoolAdquire(SpawnPosition spawnerTransform, string objType, BasePool pool) { _inPool = false; ownerPool = pool; shootType = objType; transform.position = spawnerTransform.spawnPoint; transform.rotation = spawnerTransform.rotation; }
/// <summary> /// 释放一个池子(手动销毁池子) /// 释放一个池子 只会销毁池子缓存的gameobject 并释放引用ab次数 /// ab的释放 每段时间检查refCount<零释放 todo /// </summary> /// <param name="resName"></param> public void disposePool(string resName) { if (pools.ContainsKey(resName)) { BasePool bp = pools[resName]; pools.Remove(resName); bp.onDispose(); } }
//从对象池取出 public void getObj(string url, Action <GameObject> callBack, E_PoolType pType) { if (!pools.ContainsKey(url)) { BasePool bp = new BasePool(url, pType); pools.Add(url, bp); } pools[url].getObj(callBack); }
public void Init(RightPanel controller, BasePool pool, Field field, bool received = false) { listingsPool = pool; rightPanel = controller; tradeField = field; removeButton.gameObject.SetActive(!received); nameText.text = tradeField.GetFieldName(); }
/// <summary> /// 创建池 /// </summary> /// <param name="resName"></param> /// <param name="mode"></param> /// <param name="pType"></param> /// <param name="time"></param> private void createPool(string resName, E_PoolMode mode = E_PoolMode.Time, E_PoolType pType = E_PoolType.None, float time = 60) { if (!pools.ContainsKey(resName)) { string resPath = Path.Combine(Define.abPre, resName).ToLower(); BasePool p = PoolFactory.create(resName, resPath, mode, pType, time); pools.Add(resName, p); } }
void Start() { bulletPrefab = Resources.Load <GameObject>("Prefabs/Bullet"); bulletPool = GameObjectPoolManager.Instance.CreatGameObjectPool <BasePool>("Prefabs/Bullet", bulletPrefab); //m_bullet1_pool.prefab = m_BulletPrefab; CC = GetComponent <CharacterController>(); //animator = GetComponent<Animator>(); Speed = fastSpeed; isShoot = false; }
void Awake() { if (instance == null) instance = this; else Destroy(this); ActivePool = new List<BaseObject>(); InActivePool = new List<BaseObject>(); }
/// <summary> /// awake位置应当在屏幕外 /// </summary> void Awake() { Curve = new AnimationCurve(); bulletModel = new BulletModel() { Count = 6, Speed = 10, Angle = 60 }; GameObject bullet = Resources.Load <GameObject>("Prefabs/Bullet"); bulletPool = GameObjectPoolManager.Instance.CreatGameObjectPool <BasePool>("Prefabs/Bullet", bullet); }
public override void PoolAdquire(SpawnPosition spawnerTransform, string objType, BasePool pool) { base.PoolAdquire(spawnerTransform, objType, pool); if (trails.Length > 0) { foreach (TrailRenderer t in trails) { t.enabled = true; } } }
public void Init(string name, BasePool pool, MainMenuController mainMenuController) { save = new GameSave(); saveFileName = name; FileManager.LoadGame(ref save, name); LanguageController lang = SettingsController.instance.languageController; string infoString = lang.GetWord("SAVE_LISTING_ROUND") + save.dice.round + " | " + save.date.ToString(); nameText.text = name; infoText.text = infoString; this.pool = pool; this.mainMenuController = mainMenuController; }
/// <summary> /// /// </summary> public void Init() { GameObject enemy = Resources.Load <GameObject>("Prefabs/Enemy"); pool = GameObjectPoolManager.Instance.CreatGameObjectPool <BasePool>("Prefabs/Enemy", enemy); enemy = pool.Get(new Vector3(10, 20, 0), 0); // pool.Remove(enemy); //YaoJing1 yaoJing = enemy.GetComponent<YaoJing1>(); //yaoJing.MoveEndPoint = new Vector3(-10, -10, 0); //yaoJing.MoveSpeed = 0.5f; //yaoJing.FireCD = 0.5f; }
public void PreInit(UIPanels controller) { myListings = new List <TradeListing>(); theirListings = new List <TradeListing>(); myPool = new BasePool(myContent, template, Keys.Menu.MAX_PLAYERS_COUNT); theirPool = new BasePool(theirContent, template, Keys.Menu.MAX_PLAYERS_COUNT); myPool.Init(); theirPool.Init(); uIPanels = controller; gC = GameplayController.instance; lC = SettingsController.instance.languageController; }
public override void InitBox() { base.InitBox(); buttonPool = new BasePool(buttons, null, Keys.Popups.QUESTIONBOX_BUTTONS_AMOUNT); List <GameObject> poolObjects = new List <GameObject>(); //Lista obiektów podpiętych na starcie do obiektu buttons foreach (Button b in buttons.GetComponentsInChildren <Button>()) { if (b.gameObject != buttons) { poolObjects.Add(b.gameObject); } } buttonPool.Init(poolObjects); }
public override void InitBox() { base.InitBox(); buttonPool = new BasePool(buttons, null, GameplayController.instance.session.playerCount); List <GameObject> poolObjects = new List <GameObject>(); foreach (Toggle b in buttons.GetComponentsInChildren <Toggle>()) { if (b.gameObject != buttons) { buttonList.Add(b.gameObject); poolObjects.Add(b.gameObject); } } buttonPool.Init(poolObjects); }
public GameObject GetRes(string url, Transform parent, Vector3 pos, Vector3 scale, object param, CallBackGameObject callback) { BasePool pool; if (dicArray.Contains(url)) { pool = dicArray[url] as BasePool; } else { pool = new BasePool(url); dicArray.Add(url, pool); } GameObject preObject = pool.GetRes(parent, pos, scale, param, callback); return(preObject); }
public void OnInspectorGUI() { EditorGUILayout.LabelField ("Select a pooling system"); storePoolTypes(); selectedType = EditorGUILayout.Popup(selectedType, poolStringTypes); //Check to see if a new pooling system was selected from the list if (GUI.changed) { if (!selectedType.Equals(typeStash)) { typeStash = selectedType; ScriptableObject.DestroyImmediate (pool); } } if (pool == null) { pool = (BasePool)ScriptableObject.CreateInstance(poolTypes[selectedType]); } pool.OnInspectorGUI (); }
public void PutRes(string url, GameObject goObj) { if (string.IsNullOrEmpty(url) == false) { BasePool pool; if (dicArray.Contains(url)) { pool = dicArray[url] as BasePool; } else { pool = new BasePool(url); dicArray.Add(url, pool); } pool.PutRes(goObj); } else { GameObject.Destroy(goObj); } }
//释放时间池子 public void disposeUseTime() { List <string> keys = new List <string>(); var ier = pools.GetEnumerator(); while (ier.MoveNext()) { if (!ier.Current.Value.IsAlive) { keys.Add(ier.Current.Key); } } for (int i = 0; i < keys.Count; i++) { if (pools.ContainsKey(keys[i])) { BasePool bp = pools[keys[i]]; pools.Remove(keys[i]); bp.onDispose(); } } }
/// <summary> /// allocate correct pool type and add it to types /// </summary> internal static AbstractStoragePool newPool(string name, AbstractStoragePool superPool, List <AbstractStoragePool> types) { try { switch (name) { case "a": return(superPool = new P0(types.Count)); case "b": return(superPool = new P1(types.Count, (P0)superPool)); case "c": return(superPool = new P2(types.Count, (P1)superPool)); case "d": return(superPool = new P3(types.Count, (P1)superPool)); case "noserializeddata": return(superPool = new P4(types.Count)); default: if (null == superPool) { return(superPool = new BasePool <SkillObject>(types.Count, name, AbstractStoragePool.noKnownFields, AbstractStoragePool.NoAutoFields)); } else { return(superPool = superPool.makeSubPool(types.Count, name)); } } } finally { types.Add(superPool); } }
public static BasePool create(string resName, string resPath, E_PoolMode mode, E_PoolType pType, float time) { BasePool p = null; switch (pType) { case E_PoolType.UICache: p = new UICachePool(resName, resPath, mode, pType, time); break; case E_PoolType.Atlas: p = new AtlasPool(resName, resPath, mode, pType, time); break; case E_PoolType.Model: p = new ModelPool(resName, resPath, mode, pType, time); break; default: p = new BasePool(resName, resPath, mode, pType, time); break; } return(p); }
/// <summary> /// Set pool /// </summary> public void SetPool(BasePool <T> pool) { Pool = pool; }
/// <summary> /// Constructor /// </summary> public PoolStats(BasePool <T> pool) { Pool = pool; BucketStats = new Dictionary <int, Tuple <int, int> >(); }
/// <summary> /// Ignore tracking. /// </summary> public override void SetBasePool <T>(BasePool <T> basePool) { }
void Update() { if (instance == null) instance = this; }