UNITY3D数组中精灵的样式应用于精灵///////错误 CS1061:

我正在遵循 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,并且不会抛出错误。


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


largeQ
浏览 136回答 1
1回答

子衿沉夜

tile_number是指向 .SpriteSprite不包含名为 的成员,所以这就是出现该错误的原因。sprite现在当你这样做时,你只是改变指针(即 )指向其他东西,它之前指向的东西不会改变。tile_number = something;tile_number如果你看一下 Sprite API,你会看到它有一个名为 .这就是你想改变的人。texture所以,需要明确的是,当你这样做时,是一个指向 Sprite 对象的指针,这个对象有一个叫做的成员,你把它改成了 。这与告诉你的指针指向其他精灵有很大不同。tile_number.texture = foo.bar.some_texturetile_numbertexturefoo.bar.some_texturetile_number我假设的类型是 ,您的代码似乎表明了这一点。tile_numberSprite
打开App,查看更多内容
随时随地看视频慕课网APP