Unity - 检测鼠标点击数组中的特定元素

奥斯汀·萨洛

我来自网络开发人员,最近开始学习 Unity。我正在尝试映射游戏对象的二维数组并检测特定元素上的鼠标单击,返回其索引。

我正在努力统一复制一个“array.map”函数,我可以在其中攻击每个元素的“点击”。我正在寻找类似的东西:

  for (int i = 0; i < Column; i++)
    {
        for (int j = 0; j < Row; j++)
        {
            void onClickDetected()
            {
                Debug.Log(i + j);
            }
        }
    }

任何帮助在这里将不胜感激!

快讯

我假设你有一堆非 UIGameObject类型的元素,你希望在这些元素上有一个可用的事件,这样你就可以监听对它们执行的鼠标点击。

一种解决方案是制作一个单独的脚本,其中包含一个使用 C#委托制作事件,该委托将由OnMouseDown. 您需要将此脚本附加到每个可点击元素。然后,包含可点击元素数组的脚本会将方法附加到每个实例的事件。

示例

using System;
using UnityEngine;

public class ClickableObject : MonoBehaviour
{
    public event Action<ClickableObject> MouseDown;

    // A collider component is required for OnMouseDown to work
    private void OnMouseDown()
    {
        MouseDown?.Invoke(this);
    }
}
using UnityEngine;

public class TestScript : MonoBehaviour
{
    [SerializeField]
    private ClickableObject[] clickableObjects = new ClickableObject[0];

    private void Start()
    {
        foreach (ClickableObject unit in clickableObjects)
            unit.MouseDown += OnClickableObjectMouseDown;
    }

    private void OnClickableObjectMouseDown(ClickableObject unit)
    {
        Debug.Log($"{unit.name} clicked!");
    }

    private void OnDestroy()
    {
        foreach (ClickableObject unit in clickableObjects)
            unit.MouseDown -= OnClickableObjectMouseDown;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章