无法在 C#/Unity 上加载鼠标光标纹理

问题描述 投票:0回答: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); 
} 

无论我在哪里实例化光标,我都会遇到 NullReferenceException: 对象引用未设置为对象的实例 Cursor.Update(),我缺少什么?

c# nullreferenceexception texture2d mouse-cursor
2个回答
2
投票

你应该放这条线

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

在 OnGUI() 内部而不是在 Update 中

void OnGUI(){

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

}

这是关于脚本生命周期的图表

Scripting Lifecycle


0
投票

确保您已在检查器窗口中更改纹理属性,

  • 纹理类型:光标
  • Alpha 是透明的:正确
  • 读/写:正确
  • 生成 Mip 贴图:False

© www.soinside.com 2019 - 2024. All rights reserved.