你好,谢谢你的阅读。我遵循一个2048年的教程,他正在使用文本/颜色为他的瓷砖。我用的是图像。
将不同的样式应用于瓷砖时,他的代码如下所示:
TileText.text = TileStyleHolder.Instance.TileStyles [index].Number;
TileText.color = TileStyleHolder.Instance.TileStyles[index].TextColor;
TileImage.color = TileStyleHolder.Instance.TileStyles [index].Tilecolor;
我的风格持有者代码如下:
[System.Serializable]
public class TileStyle
{
public Sprite tile_number;
}
public class TileStyleHolder : MonoBehaviour
{
//SINGLETON
public static TileStyleHolder Instance;
public TileStyle[] TileStyles;
void Awake()
{
Instance = this;
}
}
我的Tile代码如下:
public class Tile : MonoBehaviour
{
public bool mergedThisTurn = false;
public int indRow;
public int indCol;
public int Number
{
get
{
return number;
}
set
{
number = value;
if (number == 0)
SetEmpty();
else
{
ApplyStyle(number);
SetVisible();
}
}
}
//private SpriteRenderer spriteRenderer;
private Sprite tile_number;
private int number;
void Awake()
{
Sprite tile_number = GetComponentInChildren<Image>.sprite ();
}
void ApplyStyleFromHolder(int index)
{
tile_number.image = TileStyleHolder.Instance.TileStyles[index].tile_number;
}
它抛出了一个错误:
'Sprite' does not contain a definition for 'image' and no accessible extension method
但是,如果我使用这一行代码:
tile_number = TileStyleHolder.Instance.TileStyles[index].tile_number;
然后它不会抛出错误,但是一旦合并,它也不会将瓷砖样式从2更改为4。它保持为2,并且不会抛出错误。
请帮助,我现在知道如何将图像转换为数组中的下一个图像。
发布于 2019-09-29 22:51:22
tile_number
是指向Sprite
的指针。
Sprite
不包含一个名为sprite
的成员,这就是您获得错误的原因。
现在,当您执行tile_number = something;
时,您只是将指针(也就是tile_number
)更改为指向其他东西,它以前指向的东西不会改变。
如果您查看雪碧API,您将看到它有一个名为texture
的成员。那就是你想要改变的人。
因此,要明确的是,当您执行tile_number.texture = foo.bar.some_texture
时,tile_number
是指向一个Sprite对象的指针,这个对象有一个名为texture
的成员,您正在将它更改为foo.bar.some_texture
。这与告诉您的tile_number
指针指向其他精灵有很大不同。
我假设tile_number
的类型是Sprite
,您的代码似乎表明了这一点。
https://stackoverflow.com/questions/58159651
复制相似问题