Unity:如何避免将GameObjects拖到公共脚本变量中?

问题描述 投票:0回答:1

我有一个名为'Player'的GameObject和一个名为'FirePoint'的GameObject:

Screenshot of Player GameObject

此外,我还编写了一个非常基本的c#脚本“武器”:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Weapon : MonoBehaviour
{

    public Transform firePoint;

    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }
}

我将脚本拖到Player GameObject上,现在它已显示在检查器中。在脚本中,我要使用Player中的FirePoint。我知道的唯一方法是将FirePOint拖动到占位符中:

Weapon Script in Player Inspector

我想避免手动拖放,因为我想在游戏过程中使用自己的FirePoint生成新的玩家。如何以编程方式做到这一点?我找不到任何教程(也许是因为我不知道如何搜索它),所以我也很高兴拥有指向一个可解决该问题的简单教程的链接。

c# unity3d gameobject
1个回答
0
投票

您可能正在考虑使用预制件和instantiating them at runtime

Unity的Prefab系统允许您创建,配置和存储完整的GameObject及其所有组件,属性值和子GameObjects作为可重复使用的资产。预制资产充当模板,您可以从中创建新的预制实例在场景中。

Prefabs允许您将GameObject构建为模板,并在运行时创建其副本。实例化对象时,它会在代码中发生,并且可以在代码本身内分配。您可以一次在播放器预制件中分配firePoint,并且每次实例化或克隆预制件时,都会创建并分配自己的firePoint。

© www.soinside.com 2019 - 2024. All rights reserved.