簡體   English   中英

從同一類C#Unity3d中的另一個方法獲取信息

[英]Get information from another method in the same class C# Unity3d

BI是C#和Im的新手,這真的使如何從一個方法中獲取信息,然后在同一類的另一個方法中使用該信息感到困惑。

到目前為止,我已經有了這個腳本

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);  
        }

但是我似乎無法理解如何從OnMouseDrag中的curPosition中獲取信息。

我如何以一種簡單的方式解決此問題?

只需移動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));
}

通常,如果您想返回一個值,則您的方法將具有返回類型,但是事件沒有返回類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM