【问题标题】:Unity GameObject OnclickEventUnity GameObject Onclick 事件
【发布时间】:2023-03-31 13:06:01
【问题描述】:

大家好,我有一个团结的班级,不依附于任何东西:

public class Path : MonoBehaviour, IPath
{
 public GameObject Quad { get; set; } 
 public Guid Id { get; set; }

 public Path( float sizeX, float sizeY)
 {
     Quad = GameObject.CreatePrimitive(PrimitiveType.Quad);
     Id = Guid.NewGuid();
     Helpers.ChangeSize(Quad, sizeX, sizeY);
 }
}

在运行时调用。

我想在 GameObject Quad(或此类)上设置一个 OnClick 事件,该事件调用类的另一个实例(附加到主相机)的方法并将其 Id 发送给它。

知道怎么做吗?

【问题讨论】:

  • 如果它是一个 MonoBehavior,并且它没有附加到任何东西,那么它不能被调用。此外,您不能有带参数的构造函数,因为 Unity 控制组件的实例化(其中 MonoBehaviour 扩展)。
  • 你是对的@Draco18s,但有一个解决方法 - 请参阅下面的答案:)

标签: c# unity3d


【解决方案1】:

如果您想检测对游戏对象的点击,您需要在玩家点击时使用光线投射。

if (Input.GetMouseButtonDown (0)) {    
         var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
         RaycastHit hit;

         if (Physics.Raycast(ray, out hit, 100)) {
             // whatever tag you are looking for on your game object
             if(hit.collider.tag == "Idk") {                         
                 //Call method on camera                      
             }
         }    
     }

您必须将其放入某处的更新方法中。最好是某种 InputManager。您可以阅读有关 Raycast Here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2023-03-20
    • 2021-11-14
    相关资源
    最近更新 更多