簡體   English   中英

使用Unity C#中的數組的GetComponent,如何為數組中的項目調用GetComponent

[英]GetComponent using Arrays in Unity C#,How to call GetComponent for an item in an array

BoardManager類:

        public void HighlightTile()
        {
            Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            foreach (GameObject g in GameBoard) //g is the tile prefab with SpriteInfo attached to it
            {
                Vector2 min = g.GetComponent<SpriteRenderer>().bounds.min;
                Vector2 max = g.GetComponent<SpriteRenderer>().bounds.max;
                if (mousePos.x > min.x && mousePos.y > min.y && mousePos.x < max.x && mousePos.y < max.y)
                {
                    g.GetComponent<SpriteRenderer>().color = Color.red;
                }
            }
        }

精靈信息類:

public Vector2 min;
public Vector2 max;


public Vector2 FindMin
{
    get
    {
        return GetComponent<SpriteRenderer>().bounds.min;
    }
}

public Vector2 FindMax
{
    get
    {
        return GetComponent<SpriteRenderer>().bounds.max;
    }
}

隨機創建的瓷磚預制件的SpriteInfo

PIC

每當我在HighlightTile方法中Debug.Log min和max時,兩者都返回0。 但是,每當我在SpriteInfo類中對其進行調試時,它都會返回正確的數字。 在編輯器上,每個創建的圖塊克隆中也包含正確的信息,只是當我在“突出顯示”圖塊中將其稱為0時。我認為min = g.GetComponent()。bounds.min&最大。 g是已附加SpriteInfo的圖塊預制板。 我如何在HighlightTile方法中獲取正確的信息?

謝謝!

嘗試這個:

    public void HighlightTile()
    {
        Vector3 mouse = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        foreach (SpriteInfo sprite in GetComponentsInChildren<SpriteInfo>())
        {
            SpriteRenderer renderer = sprite.GetComponent<SpriteRenderer>();
            if (renderer.bounds.Contains(mouse))
                renderer.color = Color.red;
        }
    }

您還可以向每個子畫面添加一個BoxCollider並使用OnMouseDown

暫無
暫無

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

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