2014-09-18 85 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#加載鼠標光標紋理/統一

回答

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 2014-09-19 00:22:11

+1

我建立了一個腳本生命週期圖表,我很確定你可以在播放器設置的某處設置鼠標光標的圖形 – JRowan 2014-09-19 00:25:34