Unity 中的 C# Instantiate() 方法解析
官方文档(https://docs.unity3d.com/ScriptReference/Object.Instantiate.html)本身已经讲得比较详细了。
用于描述 rotation 的四元数,这个也阅读过了有关四元数的资料。
目前主要只有一点比较迷惑,先来一段简单的代码,然后再描述疑惑点。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Game : MonoBehaviour
{
public GameObject chesspiece;
void Start()
{
Instantiate(chesspiece, new Vector3(0, 0, -1), Quaternion.identity);
}
}
关于我的疑惑点,就是为什么 chesspiece
这个不经初始化就可以直接被克隆?然后结合我看的视频教程,发现,我们在给某一个 GameObject 添加脚本 Component 时,有一步操作,是将我们预制的 Prefab 资源给拖到相关脚本代码的相关属性下,我们之前将 chesspiece
的访问权限设置为 public
正是为了可以在 Unity 的 Inspector 窗口看到它,如下图所示:
就是属性名有了有了一些变化,但是这里的 Chesspiece
和脚本中的 chesspiece
是一致的。
然后我们在脚本中执行 Instantiate()
方法,其实克隆的就是 ChessPiece
这个预制资源,我的这个预制资源在资源管理器中就是这样:
按:GameObject 指的就是在 Unity 的 Hierachy 窗口中显示的资源,如下所示。