Unity: Lösung für "type or namespace could not be found"?
Hallo,
ich habe gerade angefangen, in Unity zu entwickeln und habe mir dazu ein Tutorial angeschaut. Der Code der dabei in einem C#-Skript herausgekommen ist, sieht folgendermaßen aus:
sing System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameAssets : MonoBehaviour
{
public static GameAssets instance;
private void Awake()
{
instance = this;
}
public Sprite playersprite;
}
In Unity kommt jetzt aber diese Fehlermeldung:
Assets\Scripts\GameAssets.cs(12,10): error CS0246: The type or namespace name 'Sprite' could not be found (are you missing a using directive or an assembly reference?)
Das Skript ist nahezu identisch mit dem aus dem Video (vom 25.1.2019, also eigentlich nicht veraltet), aber funktioniert nicht. Groß-/Kleinschreibung ist nicht das Problem.
LG
2 Antworten
(...) 'SpriteRenderer' does not contain a definition for 'Sprite' (...)
Das Property beginnt in Unity mit einem Kleinbuchstaben.
https://docs.unity3d.com/ScriptReference/SpriteRenderer-sprite.html
Assets\Scripts\GameHandler.cs(15,56): error CS0122: 'GameAssets.playerSprite' is inaccessible due to its protection level
Nach deiner letzten Definition ist das Attribut playerSprite doch privat. Verwende also stattdessen dein definiertes Property:
playerSpriteRenderer.sprite = GameAssets.instance.PlayerSprite;
Wobei du dieses übrigens auch gut abkürzen kannst. Entferne in GameAssets das Attribut playerSprite und nutze ein Auto-Property.
public Sprite PlayerSprite { get; set; }
Direkt in der ersten Zeile fehlt das u von "using".
War beim Kopieren nicht mit in der Markierung.
Liegt höchstwahrscheinlich an den paar Pixeln, die die Schreibmarke danebenliegt.