我想创建一个彩色矩形,我的常规方法是创建一个所需大小的矩形精灵,将其导入统一,将其附加到游戏对象,然后附加物理,碰撞控制等内容不
但是,我想创建一个随机大小的矩形,然后给它一个纹理。我不能用旧的方式做,因为那时我必须创建几千个精灵然后随机一个。
如何在不使用任何精灵的情况下创建随机大小的2d矩形?
老实说,我不知道这个问题是否有意义,我可能会认为这一切都错了,我只需知道我应该采用什么方法,我在这里完全不知所措。
答案 0 :(得分:1)
您可以实例化一个立方体,因为它是一个2D环境立方体渲染为矩形,除非旋转。最简单的方法是制作所需多维数据集的预制件然后实例化它,例如Instantiate(myCube, new Vector3(0, 0), Quaternion.Euler(0, 0, 0), myParent);
。
你也可以尝试制作一个原始立方体,然后手动分配它的属性,尽管这是非常复杂的。我现在不在家,因此未经测试,但以下方法应该从位置,比例和颜色返回一个立方体(但可以编辑以接受材料):
GameObject NewCube(Vector3 pos, Vector3 scale, Color color) {
GameObject cubePrototype = GameObject.CreatePrimitive(PrimitiveType.Cube);
cubePrototype.transform.position = pos;
cubePrototype.transform.localScale = scale;
Material materialPrototype = new Material(Shader.Find("Unlit/Color"));
materialPrototype.color = color;
Renderer cubeRenderer = new Renderer(cubePrototype.GetComponent<Renderer>());
cubeRenderer.material = materialPrototype;
return cubePrototype;
}
在您自己的情况下,只需为scale
参数传递三个随机数。
答案 1 :(得分:0)
解决这个问题的方法是在项目中添加一个精灵,然后将一个脚本附加到该精灵上,该精灵生成两个随机数,一个用于长度,然后一个用于宽度。
void Awake(){
Vector3 scale = new Vector3( width, height, 1f );
}