コード例 #1
0
        /// <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;
        }
コード例 #2
0
        /// <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;
        }
コード例 #3
0
        /// <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);
            }
        }