Поскольку в сообщении об ошибке нет конструктора для 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.