📜  如何实例化游戏对象 - C# (1)

📅  最后修改于: 2023-12-03 15:38:43.400000             🧑  作者: Mango

如何实例化游戏对象 - C#

在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”的游戏对象,并添加一个带有网格的MeshFilterMeshRenderer组件:

// 创建一个名为“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类及其构造函数。如果需要向游戏对象添加更多功能,例如渲染和网格,可以使用MeshRendererMeshFilter组件。