-4

我有一些textures我需要scrollviews动态显示的内容。对于命名约定,我使用以下方法
texturename24
texturename - 此前缀与每个纹理相关联。
2- 这代表一个特定类别的纹理,即点。条纹等
4 - 这是纹理的序列号

使用下面的代码行,我textures从资源文件夹
var textures 中获取:对象 [];
纹理 = Resources.LoadAll("TextureFolder");

我需要为每个模式创建数组假设texturename00,01,02,03应该在一个数组中并且texturename10,11,12,13应该是另一个数组,这里我需要根据模式计数创建动态数组。

4

3 回答 3

1

在过去的几天里,我一直在考虑这个问题,基本上我想不出一个用例来解决你正在做的事情,这不会通过实施一个简单的精灵表解决方案来更好地解决。您还可以获得数百种可用解决方案中的任何一种,这些解决方案实施了针对此问题的基于工作表的解决方案。

加载纹理对于引擎来说不是一项简单的任务,并且您希望尽可能限制您的 inode 访问。使用将所有子图像定期放置的单个 Atlas 纹理将是一种简单的解决方案。然后,您将遍历地图并为使用相同图像的每个材质分配 mainTextureOffsets。您也可以使用不规则放置,但为此您需要某种瞬态介质来存储偏移值。

而不是在此解决方案中将 texture2d 存储在内存中;相反,您将存储内存密集程度要低得多的 Vector2 结构。如果您的用例超出了您可以使用精灵表(Atlas 地图)执行的参数,您必须在此处完整详细说明,以便我们可以进一步帮助您,但我相当肯定这会让您获得以最有效的方式解决。

于 2013-09-18T00:33:21.080 回答
1

小提琴演示

var outer_array = [];
 var inner_array = [];

 for (var i = 0; i < 35; i++) {
     inner_array.push(i);
     if (inner_array.length == 4) {
         outer_array.push(inner_array);//push the array[0,1,2,3] and so on in to outer array.
         inner_array = [];//this will empty my array
         i = i + 6;//to jump from 4 to 10,14 to 20 and so on..
     }
 }

 console.log(outer_array)
于 2013-09-03T07:04:19.647 回答
0

我找到了一种方法来做到这一点。声明一个二维数组并将行和列设置为 100 并使用下面的代码行。noOfPattern 和 noOfColors 是整数,用于获取二维数组的行数和列数。

var arrAll = new Texture2D[100,100];

for(var p=0 ; p<100 ; p++){

TextureP = Resources.Load("FolderName/"+"ImageName"+p+0);
if(TextureP !=null){
for(var q=0 ; q<100 ; q++){
TextureQ = Resources.Load("FolderName/"+"ImageName"+p+q);
if(TextureQ !=null){
arrAll[p,q] = TextureQ;
noOfColors = q;
}
}
noOfPattern = p;
}
}
于 2013-09-03T11:58:56.690 回答