unity 位置 管理
来源:互联网 发布:游戏推广联盟源码 编辑:程序博客网 时间:2024/06/06 03:43
资源下载 http://download.csdn.net/download/tianyongheng/10161641
场景中生成的一些辅助点,占用,回收等功能.有demo可以下载,细节就不讲了
using System;using System.Collections;using System.Collections.Generic;using UnityEngine;public class PositionInfo{ /// <summary> /// 位置点 /// </summary> public Vector3 pos; /// <summary> /// 是否被占用 /// </summary> public bool isUse; /// <summary> /// 和实体映射 标记 /// </summary> public int flag;}public class MatrixPos: MonoBehaviour { public MatrixPosManager.PosFlag flag; /// <summary> /// 每个行元素之间的间距(列间距) /// </summary> [HideInInspector] public float columnSpacing=0; /// <summary> /// 每一行之间的间隔(行间距) /// </summary> [HideInInspector] public float rowSpacing=0; /// <summary> /// child排列多少行 /// </summary> [HideInInspector] public int row = 0; /// <summary> /// 每一行多少个child /// </summary> [HideInInspector] public int column = 0; public List<PositionInfo> listPos = new List<PositionInfo>(); void Awake() { InitData(); } void AddListener() { } // Use this for initialization void Start () { } void InitData() { Transform child = transform.Find("child"); for (int i=0;i< child.childCount;i++) { Vector3 v = child.GetChild(i).position; listPos.Add(new PositionInfo() { pos = new Vector3(v.x, v.y, v.z), isUse = false }); } Destroy (child.gameObject); } public void SpawnPoint() { Transform child= transform.Find("child"); for (int i=0;i<row;i++) { for (int j = 0; j < column; j++) { Vector2 p = ComputerPosition(i,j); GameObject go= GameObject.CreatePrimitive(PrimitiveType.Sphere); go.name = i.ToString() + j.ToString(); go.transform.SetParent(child); go.transform.localPosition = new Vector3(p.y, 0, p.x); } } } /// <summary> /// x:是行位置,y:是列位置 /// </summary> /// <param name="row"></param> /// <param name="col"></param> /// <returns></returns> Vector2 ComputerPosition(int row,int col) { return new Vector2 (row* rowSpacing, col* columnSpacing); } public Vector3 PushChild(int flag) { Vector3 v=Vector3.zero; for(int i=0;i<listPos.Count;i++) { if(!listPos[i].isUse) { v = listPos[i].pos; listPos[i].isUse = true; listPos[i].flag = flag;//建立映射关系 break; } } return v; } ///// <summary> ///// 移除child ///// </summary> ///// <param name="flag"></param> public void RemoveChild(int flag) { for (int i = 0; i < listPos.Count; i++) { if (listPos[i].isUse&&listPos[i].flag==flag) { listPos[i].flag = 0; listPos[i].isUse = false; Debug.Log("移除me:" + flag); break; } } } void Update() { }}
using System;using System.Collections;using System.Collections.Generic;using UnityEngine;public class MatrixPosManager : MonoBehaviour { public enum PosFlag { none, one, two, } Dictionary<PosFlag, MatrixPos> flagPosDic = new Dictionary<PosFlag, MatrixPos>(); private void Awake() { InitData(); } /// <summary> /// 保存映射 /// </summary> void InitData() { foreach (PosFlag flag in Enum.GetValues(typeof(PosFlag))) { if (flag == PosFlag.none) { continue; } if (transform.Find(flag.ToString())) { if (transform.Find(flag.ToString()).GetComponent<MatrixPos>()) { if (!flagPosDic.ContainsKey(flag)) { flagPosDic.Add(flag, transform.Find(flag.ToString()).GetComponent<MatrixPos>()); } } } } } public Vector3 PushChild(PosFlag posFlag,int flag) { Vector3 v=Vector3.zero; MatrixPos matrixPos = null; if (flagPosDic.TryGetValue(posFlag, out matrixPos)) { v= matrixPos.PushChild(flag); matrixPos = null; } return v; } public void RemoveChild(PosFlag posFlag, int flag) { MatrixPos matrixPos = null; if (flagPosDic.TryGetValue(posFlag, out matrixPos)) { matrixPos.RemoveChild(flag); matrixPos = null; } }}
阅读全文
0 0
- unity 位置 管理
- PlayerPrefs 位置 unity
- Unity位置动画
- 坐标系 unity 鼠标 位置
- 修改unity GI cache位置
- unity设置拖动对象位置
- Unity 鼠标跟随点击位置
- unity ugui 坐标位置总结
- iOS管理位置信息
- iOS管理位置信息
- MySQL文件位置管理
- unity的内存管理
- Unity 生命周期管理
- unity内存管理
- Unity 自动内存管理
- Unity 内存管理
- unity 内存管理
- unity音频管理
- javascript之checkbox全选反选功能实现
- RocketMQ原理(1)——服务端组件介绍
- 学习记录9
- shiro框架---认证
- 辩证法中包括一个关系、两大特征、三大规律、四种方法、五对范畴
- unity 位置 管理
- 2017.11.16考试总结
- Hive提示警告SSL
- 更改keyspace复制策略(九)
- 1153: sum
- Redhat 7 安装 MySQL 5.7.10, 安装JDK 1.7, 安装Tomcat 7.0 配置web服务器
- 立方尾不变
- C#版三层登录实例:问题调试
- RocketMQ原理(2)——核心概念及术语