Проблемы с шаблоном Unity - PullRequest
0 голосов
/ 20 июня 2020

Кто-нибудь может объяснить, в чем ошибка?

IEnumerator GetPictureCor(string url, FriendData friend)


    Sprite sprite = new Sprite();
    WWW www = new WWW(url);
    yield return www;
    sprite = Sprite.Create(www.texture, new Rect(0, 0, 128, 128), new Vector2(0, 0), 1f);
    friend.picture = sprite;
    //      print ("get picture for " + url);
}

Ошибка:

Assets \ ADogsAdventure \ Scripts \ Integrations \ FacebookManager.cs (419,29): error CS1729: "Sprite" не содержит конструктора, который принимает 0 аргументов

1 Ответ

2 голосов
/ 20 июня 2020

Поскольку в сообщении об ошибке нет конструктора для Sprite, который принимает аргумент 0, это связано с тем, что Sprite не предназначен для использования с Sprite sprite = new Sprite(), а вместо этого имеет метод с именем Sprite.Create();, который следует использовать для создание спрайта.

Как согласно документации Unity для Sprite.Create()

Sprite.Create создает новый Sprite, который можно использовать в игровых приложениях . Необходимо загрузить текстуру и назначить ее для Create, чтобы контролировать, как будет выглядеть новый Sprite.

public class spriteCreate : MonoBehaviour
{
    public Texture2D tex;
    private Sprite mySprite;
    private SpriteRenderer sr;

    void Awake()
    {
        sr = gameObject.AddComponent<SpriteRenderer>() as SpriteRenderer;
        sr.color = new Color(0.9f, 0.9f, 0.9f, 1.0f);

        transform.position = new Vector3(1.5f, 1.5f, 0.0f);
    }

    void Start()
    {
        mySprite = Sprite.Create(tex, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f), 100.0f);
    }

    void OnGUI()
    {
        if (GUI.Button(new Rect(10, 10, 100, 30), "Add sprite"))
        {
            sr.sprite = mySprite;
        }
    }
}

Более подробную информацию об ошибке CS1729 можно найти в документации C# , где объясняется, что конструктор give не имеет реализации для количества передаваемых вами параметров (в данном случае 0 или любое другое количество параметров, поскольку для Sprite нет конструктора publi c)

Из приведенных выше документов microsoft:

Эта ошибка возникает, когда вы прямо или косвенно вызываете конструктор класса, но компилятор не может найти никаких конструкторов с таким же количеством параметров. В следующем примере тестовый класс не имеет конструкторов, принимающих аргументы. Поэтому у него есть только конструктор без параметров, который не принимает никаких аргументов. Поскольку во второй строке, в которой генерируется ошибка, производный класс не объявляет собственных конструкторов, компилятор предоставляет конструктор без параметров. Этот конструктор вызывает конструктор без параметров в базовом классе. Поскольку базовый класс не имеет такого конструктора, создается CS1729.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...