private void AddNpc(int id, Vector3 position, Vector3 rotation, Vector3 scale) { NpcConfig tmpConfig = ConfigManager.Instance.GetNpcConfig(id); if (null == tmpConfig) { return; } GameObject sourceObj = ResourceManager.Instance.LoadBuildInResource <GameObject>(tmpConfig.ModelResource, AssetType.Char); if (null == sourceObj) { return; } GameObject instance = GameObject.Instantiate(sourceObj); ComponentTool.Attach(m_ObjNpcRoot.transform, instance.transform); m_Config.Rotation = rotation.y; m_CreatedNpcObject = instance; m_CreatedNpcObject.transform.position = position; m_CreatedNpcObject.transform.eulerAngles = rotation; m_CreatedNpcObject.transform.localScale = scale; //disable npc anim Animator anim = m_CreatedNpcObject.GetComponent <Animator>(); if (null != anim) { anim.applyRootMotion = false; } }
public async Task CreateNpcDetailCfg(NpcConfig cfg) { int output = await dbConnection.ExecuteAsync(@"INSERT INTO npcConfigs(npcid, name, description, imagePath, backgroundImagePath) VALUES(@npc, @name, @description, @imagePath, @backgroundImagePath)", new { npc = cfg.NpcId, name = cfg.Name, description = cfg.Description, imagePath = cfg.ImagePath, backgroundImagePath = cfg.BackgroundImagePath }); if (output == 0) { await dbConnection.ExecuteAsync(@"UPDATE npcConfigs SET name = @name, description = @description, imagePath = @imagePath, backgroundImagePath = @backgroundImagePath WHERE npcid = @npc", new { npc = cfg.NpcId, name = cfg.Name, description = cfg.Description, imagePath = cfg.ImagePath, backgroundImagePath = cfg.BackgroundImagePath }); } }
private void AddNpc(int id) { if (!CheckCanCreateNpc(id)) { EditorUtility.DisplayDialog("id 错误", "场景中已存在该id的npc ,id= " + id, "ok"); return; } NpcConfig tmpConfig = ConfigManager.Instance.GetNpcConfig(id); if (null == tmpConfig) { EditorUtility.DisplayDialog("id 错误", "请检查表中npc id ,错误 id= " + id, "ok"); return; } GameObject sourceObj = ResourceManager.Instance.LoadBuildInResource <GameObject>(tmpConfig.ModelResource, AssetType.Char); if (null == sourceObj) { EditorUtility.DisplayDialog("模型 id 错误", "请检查表中npc id ,错误 id= " + tmpConfig.ModelResource, "ok"); return; } Npc elem = new Npc(); elem.Initialize(id); m_CreatedNpcList.Add(elem); }
public NpcConfig GetNpcConfig(int id) { NpcConfigTable config = TryGetConfig <NpcConfigTable>(ConfigPath_NpcConfig); NpcConfig res = null; config.NpcCofigMap.TryGetValue(id, out res); return(res); }
string GetHeroNameByHeroid(uint heroid) { NpcConfig config = ConfigAsset2.Instance.GetById <NpcConfig>(heroid.ToString()); if (config != null) { return(config.name); } return(heroid.ToString()); }
private void DisplayBaseInfo() { var config = NpcConfig.Get(bossId); m_BossName.SetText(config.name); m_BossLevel.SetText(config.level); var worldBossConfig = WorldBossConfig.Get(bossId); m_BossDescription.SetLanguage(worldBossConfig.name); }
private void AddNpc(int id, Vector3 position, Vector3 rotation, Vector3 scale) { NpcConfig tmpConfig = ConfigManager.Instance.GetNpcConfig(id); if (null == tmpConfig) { EditorUtility.DisplayDialog("id 错误", "请检查表中npc id ,错误 id= " + id, "ok"); return; } GameObject sourceObj = ResourceManager.Instance.LoadBuildInResource <GameObject>(tmpConfig.ModelResource, AssetType.Char); if (null == sourceObj) { EditorUtility.DisplayDialog("模型 id 错误", "请检查表中npc id ,错误 id= " + tmpConfig.ModelResource, "ok"); return; } if (IsExistNpcInScene(id)) { EditorUtility.DisplayDialog("npc重复", "场景中已经存在相同ID的npc,错误 id= " + id, "ok"); return; } NpcEditorData elem = new NpcEditorData(); elem.m_NpcData = new TerrainNpcData(); elem.m_NpcData.Pos = new ThriftVector3(); elem.m_NpcData.Rot = new ThriftVector3(); elem.m_NpcData.Scale = new ThriftVector3(); elem.m_NpcData.Id = id; elem.m_NpcData.Pos.SetVector3(position); elem.m_NpcData.Rot.SetVector3(rotation); elem.m_NpcData.Scale.SetVector3(scale); elem.m_Instance = new Npc(); elem.m_Instance.Initialize(id); GameObject instance = ((CharTransformData)(elem.m_Instance.GetTransformData())).GetGameObject(); ComponentTool.Attach(m_ObjNpcRoot.transform, instance.transform); ((CharTransformData)(elem.m_Instance.GetTransformData())).SetPhysicStatus(false); elem.m_Instance.GetTransformData().SetPosition(position); elem.m_Instance.GetTransformData().SetRotation(rotation); elem.m_Instance.GetTransformData().SetScale(scale); m_NpcList.Add(elem); }
static string NpcMatchEvaluator(Match match) { try { var integerMatch = Regex.Match(match.Value, "\\d+"); var id = integerMatch != null?int.Parse(integerMatch.Value) : 0; var config = NpcConfig.Get(id); return(Language.Get(config.name)); } catch (System.Exception ex) { DebugEx.Log(ex); return(string.Empty); } }
public static void Init() { ItemConfig.Init(); TestConfig.Init(); WindowConfig.Init(); EffectConfig.Init(); EquipConfig.Init(); IconConfig.Init(); LanguageConfig.Init(); WorldBossConfig.Init(); NpcConfig.Init(); MapConfig.Init(); DungeonConfig.Init(); DamageNumConfig.Init(); SkillConfig.Init(); MobAssetConfig.Init(); //初始化结束 }
private void onAddNpc() { NpcConfig npcCfg = ConfigAsset.Instance.getNpcConfigs(int.Parse(input_npcId.text)); if (npcCfg == null) { Debug.Log("该NPC不在npc表中 " + int.Parse(input_npcId.text)); return; } else { try { input_npcModel.text = int.Parse(npcCfg.modelId).ToString(); input_npcModel.text = "n_fujiaertongnv"; } catch { input_npcModel.text = npcCfg.modelId; } } MapNpc npcNode = new MapNpc(int.Parse(input_npcId.text)); npcNode.ntype = npcCfg.type; npcNode.x = int.Parse(input_npcX.text); npcNode.y = int.Parse(input_npcY.text); npcNode.ai = int.Parse(input_npcAI.text); npcNode.num = int.Parse(input_npcNum.text); npcNode.interval = int.Parse(input_npcInterval.text); npcNode.scope = int.Parse(input_npcScope.text); npcNode.chase = int.Parse(input_npcChase.text); npcNode.enemyType = int.Parse(input_npcEnemyType.text); npcNode.level = int.Parse(input_npcLevel.text); EditMapManager.Instance.editMapNpc(npcNode, EditMapManager.OPERATE_ADD); float h1 = EditMapManager.Instance.terrainMan.GetHeight(int.Parse(input_npcX.text), int.Parse(input_npcY.text)); Vector3 npcPos = new Vector3(int.Parse(input_npcX.text), h1, int.Parse(input_npcY.text)); npcNode.modelId = input_npcModel.text; EditMapManager.Instance.mapNpcMgr.Preload(input_npcModel.text, npcPos, npcNode.uniqueId.ToString()); // mapNpcMgr.ShowSkillFx((GameObject.Find(RoleCtrl) as RoleCtrl), "n_fujiaertongnv"); EditMapManager.Instance.mapNpcMgr.ShowSkillFx(null, input_npcModel.text, npcPos); }
private void AddNpc(int id, Vector3 position, Vector3 rotation, Vector3 scale) { NpcConfig tmpConfig = ConfigManager.Instance.GetNpcConfig(id); if (null == tmpConfig) { EditorUtility.DisplayDialog("id 错误", "请检查表中npc id ,错误 id= " + id, "ok"); return; } GameObject sourceObj = ResourceManager.Instance.LoadBuildInResource <GameObject>(tmpConfig.ModelResource, AssetType.Char); if (null == sourceObj) { EditorUtility.DisplayDialog("模型 id 错误", "请检查表中npc id ,错误 id= " + tmpConfig.ModelResource, "ok"); return; } GameObject instance = GameObject.Instantiate(sourceObj); ComponentTool.Attach(m_ObjNpcRoot.transform, instance.transform); m_Config.Id = id; m_Config.Pos.SetVector3(position); m_Config.Rot.SetVector3(rotation); m_Config.Scale.SetVector3(scale); m_CreatedNpcObject = instance; m_CreatedNpcObject.transform.position = position; m_CreatedNpcObject.transform.eulerAngles = rotation; m_CreatedNpcObject.transform.localScale = scale; //disable npc anim Animator anim = m_CreatedNpcObject.GetComponent <Animator>(); if (null != anim) { anim.applyRootMotion = false; } }
public void Initialize(int id) { m_iId = id; m_NpcBaseInfo = ConfigManager.Instance.GetNpcConfig(id); if (null == m_NpcBaseInfo) { Debuger.LogWarning("can't load target npc: " + id); return; } m_bInitGroup = m_NpcBaseInfo.IsInGroup; m_StateMachine = new StateMachine(0, 0, this); m_CharTransformData = new CharTransformData(); m_CharTransformData.Initialize(this, m_NpcBaseInfo.ModelResource, AssetType.Char); //m_CharTransformData.AddNavmeshObs(); m_AIAgent = new AIAgent(m_NpcBaseInfo.AiId); LifeTickTask.Instance.RegisterToUpdateList(Update); MessageDispatcher.Instance.RegistMessage(ClientCustomMessageDefine.C_HIT_TERRAIN, OnHitTerrain); MessageDispatcher.Instance.RegistMessage(ClientCustomMessageDefine.C_HIT_LIFE, OnHitLife); LifeManager.RegisterLife(m_iId, this); }
public NpcEntity(string name, NpcConfig npcConfig) { proto = npcConfig.npcProtos[name]; gameObject = new GameObject(name); gameObject.AddComponent <BoxCollider2D>(); gameObject.AddComponent <NpcClickHandler>(); SpriteRenderer spriteRenderer = gameObject.AddComponent <SpriteRenderer>(); spriteRenderer.sprite = Utils.loadResource <Sprite>(Paths.NPC_PATH + name); spriteRenderer.sortingLayerName = "Npc"; spriteRenderer.material = new Material(Utils.DEFAULT_SPRITE_SHADER); gameObject.setBoundsFromSprite(); Vector3 pos = gameObject.transform.position; pos.y = DEFAULT_Y_POS; gameObject.transform.position = pos; }
public static NpcConfig Get(int id) { if (!inited) { Debug.Log("NpcConfigConfig 还未完成初始化。"); return(null); } if (configs.ContainsKey(id)) { return(configs[id]); } NpcConfig config = null; if (rawDatas.ContainsKey(id)) { config = configs[id] = new NpcConfig(rawDatas[id]); rawDatas.Remove(id); } return(config); }
private void initMapNpc() { foreach (KeyValuePair <string, MapNpc> kp in npcCollection) { MapNpc npc = kp.Value; NpcConfig npcCfg = ConfigAsset.Instance.getNpcConfigs(npc.id); try { kp.Value.modelId = int.Parse(npcCfg.modelId).ToString(); kp.Value.modelId = "n_fujiaertongnv"; } catch { kp.Value.modelId = npcCfg.modelId; } int x = (int)sw.util.PathUtil.Logic2RealX(npc.x); int y = (int)sw.util.PathUtil.Logic2RealZ(npc.y); float h1 = terrainMan.GetHeight(x, y); Vector3 npcPos = new Vector3(x, h1, y); mapNpcMgr.Preload(kp.Value.modelId, npcPos, kp.Value.uniqueId.ToString()); // mapNpcMgr.ShowSkillFx((GameObject.Find(RoleCtrl) as RoleCtrl), "n_fujiaertongnv"); mapNpcMgr.ShowSkillFx(null, kp.Value.modelId, npcPos); } }
public static void ScanAllScenes() { var configName = "scenes.json"; var filename = FI.ConfigPath + configName; var trancfgName = "transtriggers.json"; var tranFileName = FI.ConfigPath + trancfgName; var npccfgName = "npctriggers.json"; var npcFileName = FI.ConfigPath + npccfgName; var facilitycfgName = "facilitytriggers.json"; var facilityFileName = FI.ConfigPath + facilitycfgName; var questcfgName = "questtriggers.json"; var questFileName = FI.ConfigPath + questcfgName; var investigatecfgName = "investigatetriggers.json"; var investigateFileName = FI.ConfigPath + investigatecfgName; var jsonWriter = new ScannerJsonWriter(); var config = new SceneConfig(); var cfgTran = new TranConfig(); var cfgFacility = new FacilityConfig(); var cfgNpc = new NpcConfig(); var cfgQuest = new QuestAreaConfig(); var cfgInvestigate = new InvestigateConfig(); var allScenes = Directory.GetFiles("Assets/Scenes/game/streets", "*.unity", SearchOption.AllDirectories).ToList(); for (int i = 0; i < allScenes.Count; ++i) { var scene = allScenes[i]; EditorUtility.DisplayProgressBar("Scan all scenes", "scanning " + scene, (float)i / allScenes.Count); Lightmapping.giWorkflowMode = Lightmapping.GIWorkflowMode.OnDemand; var sceneName = Path.GetFileNameWithoutExtension(scene); var triggerSceneFile = "Assets/Scenes/city_triggers/" + sceneName + "_trigger.unity"; UnityEditor.SceneManagement.EditorSceneManager.OpenScene(scene, UnityEditor.SceneManagement.OpenSceneMode.Single); if (File.Exists(triggerSceneFile)) { UnityEditor.SceneManagement.EditorSceneManager.OpenScene(triggerSceneFile, UnityEditor.SceneManagement.OpenSceneMode.Additive); } Lightmapping.giWorkflowMode = Lightmapping.GIWorkflowMode.OnDemand; var curScene = EditorApplication.currentScene; if (curScene != null && curScene != "") { sceneName = System.IO.Path.GetFileNameWithoutExtension(curScene); var street = new SceneConfig.Street(sceneName); var ttan = new TranConfig.Trigger(sceneName); var tnpc = new NpcConfig.Trigger(sceneName); var tfacility = new FacilityConfig.Trigger(sceneName); var tquest = new QuestAreaConfig.Trigger(sceneName); var tinvestigate = new InvestigateConfig.Trigger(sceneName); var scanner = new SceneScanner(street, ttan, tfacility, tnpc, tquest, tinvestigate); scanner.ScanCurrentScene(sceneName); config.AddStreet(street); cfgTran.AddTrigger(ttan); cfgNpc.AddTrigger(tnpc); cfgFacility.AddTrigger(tfacility); cfgQuest.AddTrigger(tquest); cfgInvestigate.AddTrigger(tinvestigate); LogUtil.Debug("Scene " + curScene + " scan success"); } else { LogUtil.Debug("You need to select a scene before scan"); } } jsonWriter.OutputToFile(filename, config.ToJson()); jsonWriter.OutputToFile(tranFileName, cfgTran.ToJson()); jsonWriter.OutputToFile(facilityFileName, cfgFacility.ToJson()); jsonWriter.OutputToFile(npcFileName, cfgNpc.ToJson()); jsonWriter.OutputToFile(questFileName, cfgQuest.ToJson()); jsonWriter.OutputToFile(investigateFileName, cfgInvestigate.ToJson()); LogUtil.Debug("Scene " + filename + " successfully generated in game-config folder"); EditorUtility.ClearProgressBar(); AssetDatabase.SaveAssets(); }