在 Unity 游戏中,所有的 MonoBehavior 都是附加在 GameObject 上的,并且 MonoBehavior 给予了 GameObject 一些行为和功能。但是在 BepInEx 中,只有 MonoBehavior,它们没有直接附加到 GameObject 上。

要让你定义的 MonoBehavior 和 Unity 自带的 MonoBehavior 类似,你可以在你的 MonoBehavior 中创建一个 GameObject,并将其作为子对象附加到一个已有的 GameObject 上。这样,你的 MonoBehavior 就会有外观、能够被渲染,以及有实体位置。

以下是一个示例代码,演示如何创建一个 GameObject,并将其作为子对象附加到另一个 GameObject 上:

using UnityEngine;

public class MyScript : MonoBehaviour
{
    private GameObject myGameObject;

    private void Start()
    {
        // 创建一个新的 GameObject
        myGameObject = new GameObject('MyGameObject');

        // 设置 GameObject 的位置
        myGameObject.transform.position = new Vector3(0, 0, 0);

        // 将新的 GameObject 作为子对象附加到当前 GameObject
        myGameObject.transform.SetParent(this.transform);

        // 添加一个 SpriteRenderer 组件,并设置贴图
        SpriteRenderer spriteRenderer = myGameObject.AddComponent<SpriteRenderer>();
        spriteRenderer.sprite = Resources.Load<Sprite>('YourSpriteImagePath');
    }
}

在上面的示例中,我们创建了一个名为 'MyGameObject' 的 GameObject,并将其作为子对象附加到当前的 GameObject。然后,我们添加了一个 SpriteRenderer 组件,并设置了贴图。

注意,当你在 BepInEx 中使用这种方式创建 GameObject 时,它们不会被自动销毁。你需要手动管理它们的创建和销毁。如果你希望在场景切换时自动销毁这些 GameObject,你可以使用 DontDestroyOnLoad 方法。

DontDestroyOnLoad(myGameObject);

这样,myGameObject 就不会在场景切换时被销毁。

希望这些信息能对你有所帮助!

BepInEx 中如何创建和管理 GameObject 以实现与 Unity 原生行为一致的 MonoBehavior

原文地址: https://www.cveoy.top/t/topic/o8dX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录