Esempio n. 1
0
        protected void Callback_SpawnCar(IntCD CD, IVoidParam spawnCarParam)
        {
            SpawnCarParam _spawnCarParam = spawnCarParam as SpawnCarParam;
            var           car            = EntityManager.GetInstance().GenEntityGameObject(1, EntityFuncType.CrossRoadCar) as EntityCrossRoadCar;

            //var car = EntityManager.GetInstance().GetRandomEntity(ResType.Car, EntityFuncType.CrossRoadCar) as EntityCrossRoadCar;

            car.Init(_spawnCarParam.startPos, _spawnCarParam.endPos, _spawnCarParam.speed);
            //重要:Entity取出后先设置位置,再把Collider设置成true,防止在未设置位置时触发碰撞
            car.position = _spawnCarParam.startPos;
            try
            {
                car.GetTrans().Find("Collider").gameObject.SetActive(true);
            }
            catch (System.Exception e)
            {
#if UNITY_EDITOR
                throw new System.Exception(string.Format("汽车 {0} 取Collider 失败", car.mainGameObject.name));
#endif
            }


            car.LookAt(_spawnCarParam.endPos);
            car.Active();

            CrossRoadModelManager.GetInstance().entityModel.AddToEntityMovables(car);
            if (CD != null)
            {
                CD.Reset();
                CD.Run();
            }
        }
        /// <summary>
        /// cdCallback中能收到cd, 如果caCallback希望下一轮cd
        /// 继续执行,在适当的时候调用cd.Reset()和cd.Run()
        /// </summary>
        /// <param name="cdVal"></param>
        /// <param name="cdCallback"></param>
        public void AddCD(int cdVal, IVoidParam voidParam, System.Action <IntCD, IVoidParam> cdCallback)
        {
            var voidParamCD = new VoidParamIntCD
            {
                CD      = new IntCD(cdVal),
                cbParam = voidParam,
                cb      = cdCallback,
            };

            voidParamCD.CD.Run();
            CDs.Add(voidParamCD);
        }