Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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#Unity3d中的另一个方法获取信息_C#_Unity3d - Fatal编程技术网

从同一类C#Unity3d中的另一个方法获取信息

从同一类C#Unity3d中的另一个方法获取信息,c#,unity3d,C#,Unity3d,我对C#很陌生,我真的很困惑如何从一个方法中获取信息,然后在同一类的另一个方法中使用它 到目前为止,我得到了这个脚本 public class DragDropBehaviour : MonoBehaviour { private Vector3 screenPoint; private Vector3 offset; void OnMouseDown() { screenPoint = Camera.main.WorldToScreenPoint(gameObjec

我对C#很陌生,我真的很困惑如何从一个方法中获取信息,然后在同一类的另一个方法中使用它

到目前为止,我得到了这个脚本

public class DragDropBehaviour : MonoBehaviour 
{
private Vector3 screenPoint;
private Vector3 offset;

void OnMouseDown()
    {
        screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position);
        offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
        Debug.Log("Clicked "+gameObject.name);
    }

public void OnMouseDrag()
    {
        Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
        Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint)+offset;
            transform.position = curPosition;
            var objectPosition = curPosition;
        }
}
在活动和我的OnMouseDrag之后,我想做如下事情:

void OnMouseUp()
        {
            Debug.Log("GameObject is now at "+onMouseDrag.objectPosition);  
        }
但我似乎不明白如何从我的电脑里的电子位置获取信息


如何以简单易懂的方式解决此问题?

只需移动
objectPosition
变量,使其成为类实例而不是方法实例

public class DragDropBehaviour : MonoBehaviour 
{
    private Vector3 screenPoint;
    private Vector3 offset;

    private Vector3 ObjectPosition;
现在
OnMouseDrag()
事件可以分配给它,而
OnMouseUp
事件可以从中读取

public void OnMouseDrag()
{
    Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint)+offset;
    ...
    ObjectPosition = curPosition;
}

void OnMouseUp()
{
    Debug.Log(string.Concat("GameObject is now at ", ObjectPosition));
}

通常,如果您想返回一个值,那么您的方法将有一个返回类型,但事件没有返回类型。

因此我将其移动到方法外部,然后使用Debug.Log(“GameObject现在位于”+DragDropBehavior.ObjectPosition)?谢谢以后如果我想从另一个类访问相同的信息,我将能够使用DragDropBehavior.ObjectPosition访问它?可以。再次感谢:)