C# 如何以最佳方式实例化Unity中的静态UI图像网格?
以下是设置:C# 如何以最佳方式实例化Unity中的静态UI图像网格?,c#,unity3d,optimization,gameobject,C#,Unity3d,Optimization,Gameobject,以下是设置: 包含带有子映像的游戏对象的预设(CellPrefact)。当一个单元格被实例化时,它会得到一个随机的颜色 一个X×Y网格的单元格 这是预制件: 其中base是带有图像的游戏对象: 像素是一个1x1的白点 以及单元格的代码: 使用UnityEngine; 使用UnityEngine.UI; 公共类单元:单一行为 { 私有void Start() { GetComponent().color=Random.ColorHSV(0f、1f、0f、1f、0f、1f); } } 网格
- 包含带有子映像的游戏对象的预设(CellPrefact)。当一个单元格被实例化时,它会得到一个随机的颜色
- 一个X×Y网格的单元格
使用UnityEngine;
使用UnityEngine.UI;
公共类单元:单一行为
{
私有void Start()
{
GetComponent().color=Random.ColorHSV(0f、1f、0f、1f、0f、1f);
}
}
网格的代码:
公共类网格
{
公共网格(整数宽度、整数高度、浮动单元格大小、单元格预制、画布)
{
this.cellSize=cellSize;
单细胞=细胞预制;
gridArray=新整数[宽度,高度];
cellContentArray=新单元格[宽度、高度];
对于(变量x=0;x
请注意,栅格包含的对象永远不会移动、调整大小或以其他方式转换,因此是静态的
挑战是网格的大小无法管理。在我的用例中,我不能低于100乘100的网格。这意味着,使用我当前的方法,我实例化了10000个游戏对象,只是为了显示网格,此时我正在渲染4000Tris。在尝试选择网格中的任何单元格时,Unity编辑器长时间没有响应
正如您在屏幕截图上看到的,每个单元格都只是一个带有颜色(随机)的正方形图像
我将感谢一些指导或方法,以统一的方式处理大量游戏对象,或者如果有其他方法可以解决这个问题。也许是一种将所有图像“挤压”成一个大图像的方法,但仍然保留关于不同细胞位置和对象信息的信息
谢谢 我认为通过UI呈现这一点是错误的抽象 你需要这样想:
1) 如何存储单元格的信息? 在一个简单的二维数组中 您有一个
单元格
类
每个单元格都应该有一个显示颜色作为单元格类的公共属性
然后,您的单元格网格就是一个单元格[,]
对象
2) 如何向用户显示此信息? 创建与二维单元阵列尺寸相同的黑色图像 在二维单元格数组中循环 对于每个x,y单元,将图像的x,y像素颜色更改为单元的颜色
完成了。现在您有了一个游戏对象,一个与2D阵列尺寸相同的图像。请提供屏幕截图,让我们看看预制件是如何定义的(这样我们就可以在Unity编辑器的右侧看到它的所有定义。当然,我添加了其他信息。只是想知道,你的单元格是否也需要一个画布渲染器?我只是好奇,不可能删除这个组件?图像组件依赖于它。所以我不能不删除就删除图像组件是的,但我问的是“单元”,而不是“基”节点。