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); }