01.添加显示数据
编辑导演类,首先获取主屏幕的默认图层:
Layer defaultLayer = _screenMain.GetLayer("DefaultLayer");
随便添加点显示数据:
if (defaultLayer != null)
{
// 添加一辆坦克
defaultLayer.ViewData = new List<MyPoint>()
{
new MyPoint(0, 0),
new MyPoint(0, 2),
new MyPoint(1, 0),
new MyPoint(1, 1),
new MyPoint(1, 2),
new MyPoint(2, 1),
};
}
02.重点来了:刷新主屏幕
显示数据有了,但是要显示在屏幕上,需要获取显示数据,然后映射在屏幕上。
目前屏幕上所有像素点都是显示状态,需要稍稍修改下初始化屏幕的代码,将像素点设置为不可见:
// 设置为不可见
pixel.SetActive(false);
添加成员——显示数据,除了图层,在主屏幕类中也需要一个显示数据,该成员的数据是整合所有图层后的数据:
List<MyPoint> _viewData; // 显示数据
修改初始化方法Init(),在该方法中初始化显示数据:
_viewData = new List<MyPoint>();
添加刷新屏幕方法——遍历图层取出所有显示数据,然后遍历显示数据映射在屏幕上:
// 刷新屏幕
public void RefreshScreen()
{
// 遍历图层 - 填充显示数据
foreach (var layer in _layerList)
{
// 遍历该图层上的每个点并计算新点的坐标
foreach (var point in layer.ViewData)
{
MyPoint newPoint = new MyPoint();
// 新点的坐标 = 图层的坐标 + 旧点在图层上的坐标
newPoint._line = layer.Point._line + point._line;
newPoint._list = layer.Point._list + point._list;
// 添入一个点至显示数据
_viewData.Add(newPoint);
}
}
// 遍历显示数据 - 绘制图形
foreach (var point in _viewData)
{
_screen[point._line, point._list].SetActive(true);
}
}
03.调用刷新屏幕
回到导演类,在添加显示数据后面加上刷新屏幕:
// 刷新屏幕
_screenMain.RefreshScreen();
回到Unity,运行游戏,如果不出意外,应该显示如下:
代码链接:https://pan.baidu.com/s/195YGyRujzGZlZgDHndsXwQ
提取码:xzd1
网友评论