我正在遵循 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{//SINGLETONpublic 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,并且不会抛出错误。请帮忙,我现在知道如何将图像转换为数组中的下一个图像。
1 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
tile_number
是指向 .Sprite
Sprite
不包含名为 的成员,所以这就是出现该错误的原因。sprite
现在当你这样做时,你只是改变指针(即 )指向其他东西,它之前指向的东西不会改变。tile_number = something;
tile_number
如果你看一下 Sprite API,你会看到它有一个名为 .这就是你想改变的人。texture
所以,需要明确的是,当你这样做时,是一个指向 Sprite 对象的指针,这个对象有一个叫做的成员,你把它改成了 。这与告诉你的指针指向其他精灵有很大不同。tile_number.texture = foo.bar.some_texture
tile_number
texture
foo.bar.some_texture
tile_number
我假设的类型是 ,您的代码似乎表明了这一点。tile_number
Sprite
- 1 回答
- 0 关注
- 132 浏览
添加回答
举报
0/150
提交
取消