c# - 以矩阵形状 UNITY 实例化预制件
问题描述
我的问题:我需要实例化 NxN 预制件以在屏幕上形成矩阵。我的解决方案:
所有对象都被实例化并设置为具有父级画布。我的预制件固定在画布的左上角。我目前不满足我需要的解决方案是:
int yAnchorPos = -100;
for (int row = 0; row < nBoardSize; ++row)
{
int xAnchorPos = 100;
_mGameBoard[row] = new GameObject[nBoardSize];
for (int col = 0; col < nBoardSize; ++col)
{
_tilePrefab = Instantiate(_tilePrefab, transform.position, Quaternion.identity);
_tilePrefab.transform.SetParent(this.transform);
_tilePrefab.GetComponent<RectTransform>().anchoredPosition = new Vector3(xAnchorPos,yAnchorPos,0);
_tilePrefab.transform.tag = row.ToString() + col.ToString();
_tilePrefab.transform.name = _tilePrefab.transform.tag;
_mGameBoard[row][col] = _tilePrefab;
_mGameBoard[row][col].GetComponent<Image>().color = colors[UnityEngine.Random.Range(0, 4)];
xAnchorPos += 150;
}
yAnchorPos -= 150;
}
解决方案
伪代码测量画布的总宽度 指定元素间距的百分比 将元素大小设置为 #of 个元素/(画布宽度 - 间距) 在 i 或 j 的每次迭代中创建一个 for 循环 将下一个 ui 元素向上或向下移动元素大小+(百分比空间/元素个数)
推荐阅读
- angular - Angular TypeError:无法使用 Rxjs 在字符串“”上创建属性
- postgresql - PostreSQL 触发器不允许无异常的操作
- json - 选择一个国家后,如何查看一个国家的详细信息(我的列表视图)?
- javascript - 15 分钟间隔相关组合框
- ubuntu - 关闭 MS Edge 后,滚动条有时在 Visual Studio Code 中不起作用
- css - 如果未启用 javascript,是否有适用的 css 选择器?
- android - 数据绑定不适用于 Android 中的 EditText
- xpath - HtmlAgilityPack 和 XPath 产生 2 个不同的结果
- vba - 元素中的元素 | 使用 VBA 的硒
- python - 如何将数据框下载或转换为excel文件?