Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以最佳方式实例化Unity中的静态UI图像网格?_C#_Unity3d_Optimization_Gameobject - Fatal编程技术网

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网格的单元格
这是预制件:

其中base是带有图像的游戏对象:

像素是一个1x1的白点

以及单元格的代码:

使用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编辑器的右侧看到它的所有定义。当然,我添加了其他信息。只是想知道,你的单元格是否也需要一个画布渲染器?我只是好奇,不可能删除这个组件?图像组件依赖于它。所以我不能不删除就删除图像组件是的,但我问的是“单元”,而不是“基”节点。