UNITY3D 将数组中的精灵样式应用于精灵 /////// 错误 CS1061:'Sprite' 不包含 'sprite' 的定义

UNITY3D apply style of sprite in array to sprite /////// error CS1061: 'Sprite' does not contain a definition for 'sprite'

您好,感谢阅读。 我正在学习 2048 教程,他正在使用 text/color 作为他的图块。我正在使用图片。

他的代码在对tile应用不同的样式时如下:

TileText.text = TileStyleHolder.Instance.TileStyles [index].Number;
TileText.color = TileStyleHolder.Instance.TileStyles[index].TextColor;
TileImage.color = TileStyleHolder.Instance.TileStyles [index].Tilecolor;

我的style holder代码如下:

 [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,并且不会引发错误。

请帮忙,我现在知道如何将图像转换为数组中的下一张图像。

tile_number 是指向 Sprite.

的指针

Sprite 不包含名为 sprite 的成员,所以这就是您收到该错误的原因。

现在,当您执行 tile_number = something; 时,您只是将指针(即 tile_number)更改为指向其他内容,之前指向的内容不会改变。

如果您看一下 Sprite API,您会发现它有一个名为 texture 的成员。那就是你想改变的人。

所以,要清楚,当你做tile_number.texture = foo.bar.some_texture时,tile_number是一个指向Sprite对象的指针,这个对象有一个叫做texture的成员,你正在改变它至 foo.bar.some_texture。这与告诉您的 tile_number 指针指向其他精灵有很大不同。

我假设 tile_number 的类型是 Sprite,您的代码似乎表明了这一点。