【问题标题】:UNITY3D apply style of sprite in array to sprite /////// error CS1061: 'Sprite' does not contain a definition for 'sprite'UNITY3D 将数组中的精灵样式应用于精灵 /////// 错误 CS1061:“Sprite”不包含“sprite”的定义
【发布时间】:2023-03-23 08:57:01
【问题描述】:

您好,感谢您的阅读。 我正在关注 2048 教程,他正在为他的瓷砖使用文本/颜色。我正在使用图片。

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

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;

然后它不会抛出错误,但它也不会在合并后将 tile 样式从 2 更改为 4。它保持为 2,并且不会引发错误。

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

【问题讨论】:

    标签: c# unity3d game-development


    【解决方案1】:

    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,您的代码似乎表明了这一点。

    【讨论】:

    • 您好,我不得不多次更改脚本以模仿我所拥有的统一性。请再看一遍,我第一次搞砸了,对不起,谢谢你的回复
    • 我在回答中所说的内容仍然适用。但是你犯了一个语法错误,应该是GetComponentInChildren&lt;Image&gt;().sprite;。此外,您要声明 tile_number 两次,一次在课堂上,一次在 Awake 中(您必须删除 Awake 中的 Sprite 词)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多