📅  最后修改于: 2023-12-03 15:38:43.400000             🧑  作者: Mango
在Unity中,游戏对象是游戏世界中的基本构建块。实例化游戏对象是创建新的游戏对象的过程。在C#中,使用GameObject
类及其构造函数可实现实例化游戏对象。
以下代码示例演示如何实例化一个名为“Empty Object”的空游戏对象:
// 实例化空游戏对象
GameObject emptyGameObject = new GameObject("Empty Object");
要创建空的游戏对象,只需使用GameObject
类和其带名称的构造函数即可。此构造函数为游戏对象设置一个名称,并返回一个对新创建对象的引用。
以下代码示例演示如何实例化一个名为“Cube”的游戏对象,并将红色材质应用于其渲染器:
// 创建一个名为“Cube”的游戏对象
GameObject cube = new GameObject("Cube");
// 将渲染器组件添加到游戏对象
cube.AddComponent<MeshRenderer>();
// 创建材质并将其应用于渲染器
Material cubeMaterial = new Material(Shader.Find("Standard"));
cubeMaterial.color = Color.red;
cube.GetComponent<MeshRenderer>().material = cubeMaterial;
此示例首先实例化一个名为“Cube”的游戏对象,并添加一个MeshRenderer
组件。然后,它实例化一个新材质cubeMaterial
,将其颜色设置为红色,并将其应用于MeshRenderer
组件。
以下代码示例演示如何实例化一个名为“Sphere”的游戏对象,并添加一个带有网格的MeshFilter
和MeshRenderer
组件:
// 创建一个名为“Sphere”的游戏对象
GameObject sphere = new GameObject("Sphere");
// 将MeshFilter组件添加到游戏对象
var meshFilter = sphere.AddComponent<MeshFilter>();
// 创建一个新网格,并将其分配给MeshFilter组件
var mesh = new Mesh();
mesh.vertices = new Vector3[]
{
new Vector3(0, 0.5f, 0), // 顶点1
new Vector3(0.5f, -0.5f, 0), // 顶点2
new Vector3(-0.5f, -0.5f, 0) // 顶点3
};
mesh.triangles = new int[] { 0, 1, 2 }; // 定义三角形索引
mesh.RecalculateNormals(); // 重新计算法线
meshFilter.mesh = mesh; // 将网格分配到MeshFilter组件上
// 将MeshRenderer组件添加到游戏对象
var meshRenderer = sphere.AddComponent<MeshRenderer>();
// 创建材质并将其应用于渲染器
Material sphereMaterial = new Material(Shader.Find("Standard"));
sphereMaterial.color = Color.blue;
meshRenderer.material = sphereMaterial;
此示例首先实例化一个名为“Sphere”的游戏对象,并添加一个MeshFilter
组件。然后,它创建一个新的网格,定义网格顶点和三角形索引,重新计算网格法线,并将网格分配给MeshFilter
组件。接下来,它添加一个MeshRenderer
组件,并为其创建一个材质并将其应用于渲染器。
如上所述,可以使用GameObject
类和其不同类型的组件实例化游戏对象。为了实例化空的游戏对象,只是使用GameObject
类及其构造函数。如果需要向游戏对象添加更多功能,例如渲染和网格,可以使用MeshRenderer
和MeshFilter
组件。