2014-09-18 4 views
2
public class Cursor : MonoBehaviour 
{ 
    public Texture2D cursor; 
    public int cursorSizeX = 16; // default 
    public int cursorSizeY = 16; // default 

// Use this for initialization 
void Start() 
{ 
    Object temp = Resources.Load("Textures/CR_Cursor (Custom)"); 

    if (temp == null) 
    Debug.Log("Load Object Fail"); 

    cursor = (Texture2D)Resources.Load("Textures/CR_Cursor (Custom)"); 

    if (cursor == null) 
    Debug.Log("Load Cursor Fail"); 

    Screen.showCursor = false; 
} 

// Update is called once per frame 
void Update() 
{ 
    GUI.DrawTexture(new Rect(Event.current.mousePosition.x - cursorSizeX/2,  Event.current.mousePosition.y - cursorSizeY/2, cursorSizeX, cursorSizeY), cursor); 
} 

независимо от того, где я создаю экземпляр курсора IM подоконник получения NullReferenceException: Ссылка на объект не указывает на экземпляр объекта Cursor.Update(), что мне не хватает ?Невозможно загрузить курсор мыши текстуру на C#/Unity

ответ

2

вы должны поставить эту строку

GUI.DrawTexture(new Rect(Event.current.mousePosition.x - cursorSizeX/2,  Event.current.mousePosition.y - cursorSizeY/2, cursorSizeX, cursorSizeY), cursor); 

внутри OnGUI(), а не в обновлении

void OnGUI(){ 

GUI.DrawTexture(new Rect(Event.current.mousePosition.x - cursorSizeX/2,  Event.current.mousePosition.y - cursorSizeY/2, cursorSizeX, cursorSizeY), cursor); 

} 

здесь диаграмма относительно жизненного цикла скрипта

Scripting Lifecycle

+0

Это сделал это. Даже в этом случае я вижу, что мышь иногда мигает, особенно в начале сцены. Любой способ избежать этого? Тогда я не должен использовать функцию Update()? Если бы я использовал его, OnGUI выполнялся бы явно или позже Update? – Ajna

+1

Я установил график жизненного цикла сценария, и я уверен, что вы можете установить графику для курсора мыши в настройке игрока где-нибудь – JRowan