创建一个二维矩形并为其应用纹理
creating a 2d rectangle and applying a texture to it
我想创建一个彩色矩形,我通常的方法是创建一个所需大小的矩形精灵,将其导入 unity,将其附加到游戏对象,然后附加诸如物理、碰撞控制之类的东西还有什么不是。
但是,我想创建一个随机大小的矩形,然后给它一个纹理。我不能用老方法来做,因为那时我必须创建几千个精灵然后随机取一个。
如何在不使用任何精灵的情况下创建一个随机大小的二维矩形?
老实说,我不知道这个问题是否有道理,我可能想错了,我只需要知道我应该使用什么方法,我在这里完全不知所措。
解决这个问题的方法是向您的项目添加一个精灵,然后将一个脚本附加到该精灵,生成两个随机数,一个用于长度,一个用于宽度。
void Awake(){
Vector3 scale = new Vector3( width, height, 1f );
}
您可以实例化一个立方体,因为它是一个 2D 环境立方体,除非旋转,否则呈现为矩形。最简单的方法是制作一个你想要的立方体的预制件,然后实例化它,à la Instantiate(myCube, new Vector3(0, 0), Quaternion.Euler(0, 0, 0), myParent);
.
您也可以尝试制作一个原始立方体,然后手动分配其属性,尽管这非常复杂。我现在不在家,所以它未经测试,但下面的方法应该 return 一个立方体的位置、比例和颜色(但可以编辑以接受 material):
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
参数传递三个随机数。
我想创建一个彩色矩形,我通常的方法是创建一个所需大小的矩形精灵,将其导入 unity,将其附加到游戏对象,然后附加诸如物理、碰撞控制之类的东西还有什么不是。
但是,我想创建一个随机大小的矩形,然后给它一个纹理。我不能用老方法来做,因为那时我必须创建几千个精灵然后随机取一个。
如何在不使用任何精灵的情况下创建一个随机大小的二维矩形?
老实说,我不知道这个问题是否有道理,我可能想错了,我只需要知道我应该使用什么方法,我在这里完全不知所措。
解决这个问题的方法是向您的项目添加一个精灵,然后将一个脚本附加到该精灵,生成两个随机数,一个用于长度,一个用于宽度。
void Awake(){
Vector3 scale = new Vector3( width, height, 1f );
}
您可以实例化一个立方体,因为它是一个 2D 环境立方体,除非旋转,否则呈现为矩形。最简单的方法是制作一个你想要的立方体的预制件,然后实例化它,à la Instantiate(myCube, new Vector3(0, 0), Quaternion.Euler(0, 0, 0), myParent);
.
您也可以尝试制作一个原始立方体,然后手动分配其属性,尽管这非常复杂。我现在不在家,所以它未经测试,但下面的方法应该 return 一个立方体的位置、比例和颜色(但可以编辑以接受 material):
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
参数传递三个随机数。