在代码中计算按钮的大小
如果我们规定画面大小始终为1920*1080,而格子大小随画面大小变化,那么可以在代码中这样计算每个格子的大小:
- 规定画面每边留10%的空白,对1920*1080而言,就是上下各留出108像素的空白,左右留出192像素的空白
- 留出空白之后,计算每个格子横向排列的最大尺寸和纵向排列的最大尺寸
- 从2计算出的两个值中选小的一个作为最终格子尺寸
计算横纵向按钮最大尺寸
打开GameLogic.cs
,在InitMines
函数中添加如下内容:
int _maxButtonWidth = (int)(parentButtonPrefab.GetComponent<RectTransform>().rect.width * 0.8 / maxRow);
int _maxButtonHeight = (int)(parentButtonPrefab.GetComponent<RectTransform>().rect.height * 0.8 / _maxCol);
int _buttonSize = Math.Min(_maxButtonHeight, _maxButtonWidth);
并删除我们之前在生成按钮时取按钮尺寸的代码
//int _buttonSize = (int)(buttonPrefab.GetComponent<RectTransform>().rect.height);
修改按钮尺寸
找到生成按钮的地方,修改按钮尺寸和字号(第一行是之前代码中生成按钮的地方)
GameObject _button = GameObject.Instantiate(buttonPrefab, _pos, Quaternion.identity, parentButtonPrefab.transform);
_button.GetComponent<RectTransform>().sizeDelta = new Vector2(_buttonSize, _buttonSize);
_button.transform.GetChild(0).GetComponent<RectTransform>().sizeDelta = new Vector2(_buttonSize, _buttonSize);
_button.GetComponentInChildren<TextMeshProUGUI>().fontSize = _buttonSize - 2;
代码运行结果
代码运行结果如下
在代码中将格子数修改为30*16,运行结果如下
下一篇:【unity】8.深度优先搜索