Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 作为指针的统一十字线_C#_Unity3d - Fatal编程技术网

C# 作为指针的统一十字线

C# 作为指针的统一十字线,c#,unity3d,C#,Unity3d,我有一个3d Unity游戏,世界空间中几乎没有3d对象。我在相机空间有一个十字线。当十字线穿过每个3d对象时,我会编写一个指针进入和指针退出事件。移动手机时,十字线移动,但3d对象仍停留在世界空间中。十字线不能用作指针。虽然触摸事件正在工作,但我无法将十字线作为指针。我在相机上添加了物理光线投射。 我犯了什么错误?好的,所以您试图在非UI对象上使用事件(可选的.OnPointerEnter) 假设您在屏幕空间中有十字线位置,我强烈建议使用附加到摄影机对象的脚本,尽管它可以简单地引用摄影机实例。

我有一个3d Unity游戏,世界空间中几乎没有3d对象。我在相机空间有一个十字线。当十字线穿过每个3d对象时,我会编写一个指针进入和指针退出事件。移动手机时,十字线移动,但3d对象仍停留在世界空间中。十字线不能用作指针。虽然触摸事件正在工作,但我无法将十字线作为指针。我在相机上添加了物理光线投射。
我犯了什么错误?

好的,所以您试图在非UI对象上使用事件(可选的.OnPointerEnter)

假设您在屏幕空间中有十字线位置,我强烈建议使用附加到摄影机对象的脚本,尽管它可以简单地引用摄影机实例。我们可以将其与“hitObject”结合使用,以触发自定义十字线进入/退出/悬停事件,如下所示:

CameraPointer.cs:

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(Camera))]
public class CameraPointer : MonoBehaviour {
    private GameObject hitObject = null;
    private Vector3 reticlePosition = Vector3.zero;
    private Camera camera;

    void Awake() {
        camera = GetComponent<Camera>();
    }

    // Update is called once per frame
    void Update () {
        // TODO: Replace with reticle screen position
        reticlePosition = Input.mousePosition;

        // Raycast variables
        Ray ray = camera.ScreenPointToRay(reticlePosition); 
        RaycastHit hit;

        // Raycast
        if (Physics.Raycast(ray, out hit)) {
            if (hitObject != hit.transform.gameObject) {
                if (hitObject != null) {
                    hitObject.SendMessage("OnReticleExit"); // Trigger "OnReticleExit"
                }
                hitObject = hit.transform.gameObject;
                hitObject.SendMessage("OnReticleEnter"); // Trigger "OnReticleEnter"
            } else {
                hitObject.SendMessage("OnReticleHover"); // Trigger "OnReticleHover"
            }
        } else {
            if (hitObject != null) {
                hitObject.SendMessage("OnReticleExit"); // Trigger "OnReticleExit"
            }
            hitObject = null;
        }
    }
}
using UnityEngine;
using System.Collections;

public class MyObject : MonoBehaviour
{
    // Custom reticle events
    void OnReticleEnter()
    {
        Debug.Log("Entering over " + this.name);
    }
    void OnReticleExit()
    {
        Debug.Log("Exiting over "+this.name);
    }
    void OnReticleHover()
    {
        Debug.Log("Hovering over "+this.name);
    }
}

非常感谢您的帮助…我正在实施…将尽快让您知道…我收到一条警告“如果要隐藏继承的相机,请使用新关键字…”不工作…我只是在尝试…我接受你的答案…有没有可能把你的单位包装文件…如果你不介意…非常感谢…不知道…如何感谢你帮助了一个陌生人…向你致敬…上帝保佑…我会尽我所能感谢你的。我明白了。