【问题标题】:Create a reference to a gameobject based on a raycast hit根据光线投射命中创建对游戏对象的引用
【发布时间】:2020-11-29 18:36:55
【问题描述】:

我想根据光线投射是否击中特定游戏对象来创建对游戏对象实例的引用。在这种情况下,它被称为“资源”。单击游戏对象后,我想创建一个 ResourceSource 类型的对象,该对象包含该特定游戏对象的所有变量和方法。

例如,我单击游戏对象。创建了一个变量

ResourceSource resource =  hit.collider.gameObject.GetComponent<ResourceSource>();

显然,我不能只创建一个新对象,因为它只是一个副本,所以如果我对游戏对象进行任何更改,原始对象不会受到影响。

ResourceSource 类

public class ResourceSource : MonoBehaviour
{
    public ResourceType type;
    public int quantity;
    public UnityEvent onQuantityChange;
    Cooldown cooldown;


    public Vector3 GetPositon()
    {
        return gameObject.transform.position;
    }

}

我要创建引用的方法

 void CheckIfResource(RaycastHit hit)
    {
        if (hit.collider.gameObject.tag == "Resource")
        {
            //Want to create something like this
            ResourceSource resourcePosition = hit.collider.gameObject.GetComponent<ResourceSource>();
        }
    }

对于统一来说还是有点新,所以任何帮助表示赞赏:)

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:
    ResourceSource resource;
    resource = hit.collider.gameObject.GetComponent<ResourceSource>();
    

    【讨论】:

    • 这只是写你已经拥有的东西的更长的方式......ResourceSource resource = hit.collider.gameObject.GetComponent&lt;ResourceSource&gt;();的行为完全相同......你只是将变量的定义和声明分开......这没关系但没必要
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多