/// <summary> /// 构造函数 /// </summary> /// <param name="data"></param> public ILevelObject(Neptune.BaseGenericNode data) { rawData = data; gameObject = new GameObject(data.GameObjectName); transform = gameObject.transform; transform.position = data.Position; transform.rotation = data.Rotation; transform.localScale = data.Scale; }
/// <summary> /// 构造函数 /// </summary> /// <param name="id"></param> /// <param name="name"></param> /// <param name="position"></param> /// <param name="rotation"></param> /// <param name="scale"></param> public ILevelObject(int id, string name, Vector3 position, Quaternion rotation, Vector3 scale) { rawData = new Neptune.BaseGenericNode(); rawData.Id = id; rawData.GameObjectName = name; rawData.Position = position; rawData.Rotation = rotation; rawData.Scale = scale; mId = id; gameObject = new GameObject(name); transform = gameObject.transform; transform.position = position; transform.rotation = rotation; transform.localScale = scale; }
/// <summary> /// 获取指定id和type的tag的位置 /// </summary> /// <param name="idAndType">id和type的字符串组合,例如boss_pos_2</param> /// <param name="data"></param> /// <returns></returns> static public Vector3 GetTagPosition(string idAndType, Neptune.Data data = null) { if (data == null) { data = Neptune.DataManager.Instance.Data; } var tag_data = data.GetData <Neptune.Tag>().Data; // 解析idAndType中的id int id = -1; int digit_place = 1; int type_length = -1; int num_0 = (int)'0'; for (int i = idAndType.Length - 1; i >= 0; --i) { char c = idAndType[i]; if (c >= '0' && c <= '9') { if (id == -1) { id = digit_place * ((int)c - num_0); } else { id += digit_place * ((int)c - num_0); } digit_place *= 10; } else if (c == '_') { type_length = i; break; } } Neptune.BaseGenericNode node_info = null; if (!tag_data.TryGetValue(id, out node_info)) { return(Vector3.zero); } Neptune.Tag tag_info = node_info as Neptune.Tag; if (tag_info != null) { // 判断类型是否相同 string type = tag_info.Type; for (int i = 0; i < type.Length && i < type_length; ++i) { char c1 = type[i]; char c2 = idAndType[i]; if (c1 != c2) { return(Vector3.zero); } } return(tag_info.Position); } else { return(Vector3.zero); } }