UNITY CS1061 Sprite не содержит определения для включенного - PullRequest
1 голос
/ 25 сентября 2019

Я следую учебнику 2048 года в единстве.Он использует текст и изображение для рендеринга своих «плиток», и я решил использовать спрайт, потому что у меня есть готовые плитки в Adobe.Первый бит кода - это TileStyleHolder, а второй скрипт называется Tile (для присоединения к самому спрайту / самому изображению, которое будет включено / отключено).

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 голосов
/ 25 сентября 2019

Если вы используете компонент Image, вы можете ссылаться на спрайт с помощью:

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

Если вы используете компонент SpriteRenderer, вы можете ссылаться на спрайт с помощью:

Sprite mySprite = GetComponent<SpriteRenderer>().sprite;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...