UNITY CS1061 Sprite不包含已启用的定义

时间:2019-09-25 16:33:07

标签: c# unity3d

我正在统一学习2048教程。他正在使用“文本和图像”来渲染他的“瓷砖”,我决定使用精灵,因为我已经在Adobe中预制了瓷砖。代码的第一位是TileStyleHolder,第二个脚本称为Tile(将附加到将启用/禁用的实际Sprite /图像本身)。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[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;
    }
}

这是第二个脚本~~

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Tile : MonoBehaviour
{
    public int Number 
    {
        get 
        {
            return number;
        }
        set 
        {
            number = value;
            if (number == 0)
                SetEmpty();
            else 
            {
                ApplyStyle(number);
                SetVisible();
            }
        }
    }
    private int number;

    private Sprite TileSprite;

    void Awake() 
    {
        TileSprite = transform.Find("numcell").GetComponent<Sprite>();
    }

    void ApplyStyleFromHolder(int index) 
    {
        TileSprite = TileStyleHolder.Instance.TileStyles[index].tile_number.ToSprite();
    }

    void ApplyStyle(int num) 
    {
        switch (num) 
        {
            case 2:
            ApplyStyleFromHolder(0);
            break;

            case 4:
            ApplyStyleFromHolder(1);
            break;

            case 8:
            ApplyStyleFromHolder(2);
            break;

            case 16:
            ApplyStyleFromHolder(3);
            break;

            case 32:
            ApplyStyleFromHolder(4);
            break;

            case 64:
            ApplyStyleFromHolder(5);
            break;

            case 128:
            ApplyStyleFromHolder(6);
            break;

            case 256:
            ApplyStyleFromHolder(7);
            break;

            case 512:
            ApplyStyleFromHolder(8);
            break;

            case 1024:
            ApplyStyleFromHolder(9);
            break;

            case 2048:
            ApplyStyleFromHolder(10);
            break;

            case 4096:
            ApplyStyleFromHolder(11);
            break;

            default:
            Debug.LogError("Check the numders that you pass to ApplyStyle");
            break;
        }
    }

    private void SetVisible() 
    {
        TileSprite.enabled = true;
    }

    private void SetEmpty() 
    {
        TileSprite.enabled = false;
    }


    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }
}

1 个答案:

答案 0 :(得分:0)

如果您使用的是Image组件,则可以使用以下命令引用该精灵:

Sprite mySprite = GetComponent<Image>().sprite;

如果您使用的是SpriteRenderer组件,则可以通过以下方式引用该图片:

Sprite mySprite = GetComponent<SpriteRenderer>().sprite;