Unity c# 图像未出现在 UI canvas 面板中
Unity c# Image not appearing in UI canvas panel
我写了一个方法MakeCard()
,它实例化了一个卡片预制件(有一个按钮),并通过使用精灵数组的脚本向它添加了一个图像,但图像没有出现在面板中( "Card Pool") 我将其转换设置为。我有另一种具有相同代码的方法,它在其他面板中显示卡片(带有图像)(工作得很好)。但是代码不适用于 "Card Pool" 面板。我什至在日志中显示卡的索引和名称,以检查它是否正常。请帮助!
编辑:如果我将卡片的父面板从 "Hand" 更改为 "Card Pool" 它显示正常,但如果我实例化卡片并将其父面板设置为 "Card Pool" 它不显示。希望此信息有意义!
public void MakeCard(int index)
{
print("Making Card..." + index);
var cardCopy = Instantiate(cardObj, new Vector3(0, 0, 0),
Quaternion.identity);
var newCard = cardCopy.GetComponent<Card>();
newCard.SetFace(myData.shuffleIndex[index]);
print(newCard.GetName());
cardCopy.transform.SetParent(GameObject.Find("Card Pool").transform);
cardCopy.GetComponent<Button>().interactable = false;
}
另一个运行良好的代码是:
public void DistributeMyCards()
{
for(int temp = myData.shuffleIndexToStartWith + 12; myData.shuffleIndexToStartWith < temp; myData.shuffleIndexToStartWith++)
{
//localHand.Add(myData.shuffleIndexToStartWith);
Debug.Log("inside for: " + myData.shuffleIndexToStartWith);
var cardCopy = Instantiate(cardObj, new Vector3(0, 0, 0), Quaternion.identity);
var newCard = cardCopy.GetComponent<Card>();
newCard.SetFace(myData.shuffleIndex[myData.shuffleIndexToStartWith]);
cardCopy.transform.SetParent(GameObject.Find("Hand").transform);
var owner = cardCopy.GetComponent<CardOwner>();
owner.photonPlayer = PlayerNetwork.Instance.me;
owner.setCardId(myData.shuffleIndexToStartWith);
if (!PhotonNetwork.isMasterClient)
{
DisableThrowLocal(cardCopy);
}
localHand.Add(cardCopy);
}
}
PS。虽然是多人游戏,但我想这与这个问题没有任何关系。
好的,所以我发现了问题。我必须在附加到面板的水平布局组组件下勾选 child controls size
(高度和宽度),就像 "Hand panel".
我写了一个方法MakeCard()
,它实例化了一个卡片预制件(有一个按钮),并通过使用精灵数组的脚本向它添加了一个图像,但图像没有出现在面板中( "Card Pool") 我将其转换设置为。我有另一种具有相同代码的方法,它在其他面板中显示卡片(带有图像)(工作得很好)。但是代码不适用于 "Card Pool" 面板。我什至在日志中显示卡的索引和名称,以检查它是否正常。请帮助!
编辑:如果我将卡片的父面板从 "Hand" 更改为 "Card Pool" 它显示正常,但如果我实例化卡片并将其父面板设置为 "Card Pool" 它不显示。希望此信息有意义!
public void MakeCard(int index)
{
print("Making Card..." + index);
var cardCopy = Instantiate(cardObj, new Vector3(0, 0, 0),
Quaternion.identity);
var newCard = cardCopy.GetComponent<Card>();
newCard.SetFace(myData.shuffleIndex[index]);
print(newCard.GetName());
cardCopy.transform.SetParent(GameObject.Find("Card Pool").transform);
cardCopy.GetComponent<Button>().interactable = false;
}
另一个运行良好的代码是:
public void DistributeMyCards()
{
for(int temp = myData.shuffleIndexToStartWith + 12; myData.shuffleIndexToStartWith < temp; myData.shuffleIndexToStartWith++)
{
//localHand.Add(myData.shuffleIndexToStartWith);
Debug.Log("inside for: " + myData.shuffleIndexToStartWith);
var cardCopy = Instantiate(cardObj, new Vector3(0, 0, 0), Quaternion.identity);
var newCard = cardCopy.GetComponent<Card>();
newCard.SetFace(myData.shuffleIndex[myData.shuffleIndexToStartWith]);
cardCopy.transform.SetParent(GameObject.Find("Hand").transform);
var owner = cardCopy.GetComponent<CardOwner>();
owner.photonPlayer = PlayerNetwork.Instance.me;
owner.setCardId(myData.shuffleIndexToStartWith);
if (!PhotonNetwork.isMasterClient)
{
DisableThrowLocal(cardCopy);
}
localHand.Add(cardCopy);
}
}
PS。虽然是多人游戏,但我想这与这个问题没有任何关系。
好的,所以我发现了问题。我必须在附加到面板的水平布局组组件下勾选 child controls size
(高度和宽度),就像 "Hand panel".