using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class mouseScript : MonoBehaviour {
public Texture2D cursorTexture;
public CursorMode cursorMode = CursorMode.Auto;
public Vector2 hotSpot = Vector2.zero;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnMouseEnter()
{
Debug.Log("texture mouse " + cursorTexture + " cusor visiblity" + Cursor.visible);
Cursor.SetCursor(cursorTexture, hotSpot, cursorMode);
}
void OnMouseExit()
{
Cursor.SetCursor(null, Vector2.zero, cursorMode);
}
}
我更改了鼠标图像属性:
我用这个编码来改变鼠标光标。在Unity编辑器中它正常工作,当我导出到html5鼠标时,光标没有改变。
当我在浏览器中调试场景时,它会显示如下错误:
加载此网址时出错:无法加载blob的来源:http://localhost:56077/f3a83177-83ac-4798-81fe-1b07da4548c2。 [例外......"无法打开输入源' file://// localhost:56077 / f3a83177-83ac-4798-81fe-1b07da4548c2'" nsresult:" 0x80520001(NS_ERROR_FILE_UNRECOGNIZED_PATH)" location:" JS frame :: resource://gre/modules/commonjs/toolkit/loader.js - >资源://devtools/shared/DevToolsUtils.js :: mainThreadFetch :: line 518"数据:是的] Stack:mainThreadFetch @ resource://gre/modules/commonjs/toolkit/loader.js - >资源://devtools/shared/DevToolsUtils.js:518:5 _getSourceText /< @resource://gre/modules/commonjs/toolkit/loader.js - >资源://devtools/server/actors/source.js:393:27 process @ resource://gre/modules/Promise.jsm - >资源://gre/modules/Promise-backend.js:922:23 walkerLoop @ resource://gre/modules/Promise.jsm - >资源://gre/modules/Promise-backend.js:806:7 scheduleWalkerLoop /< @resource://gre/modules/Promise.jsm - >资源://gre/modules/Promise-backend.js:742:11 行:518,列:0
答案 0 :(得分:1)
我认为这是WebGL。上次我尝试在WebGL上使用Cursor
API和CursorMode.Auto
选项时,它不起作用,应该被视为错误。
我必须将CursorMode.ForceSoftware
用于WebGL,将CursorMode.Auto
用于其他用户
在UNITY_WEBGL
宏的帮助下构建。
#if UNITY_WEBGL
Cursor.SetCursor(cursorTexture, hotSpot, CursorMode.ForceSoftware);
#else
Cursor.SetCursor(cursorTexture, hotSpot, CursorMode.Auto);
#endif
请注意,如果这仍然不起作用,那么你必须自己创建Cursor API。
只需使用Cursor.visible = false;
禁用主光标,然后使用假鼠标指针纹理并使用Input.mousePosition
设置其位置。
另一种选择是制作一个Javascript插件,但这应该是最后的解决方案。
答案 1 :(得分:0)
只需在Chrome浏览器中的播放器设置默认Cursor.run中进行设置即可。 您需要将带有unityWebGL的名为“ NetBox2.exe”的软件放在同一目录中。 运行它,在浏览器中输入“ http://localhost/mygame/”。
答案 2 :(得分:0)
我也遇到了同样的问题,即在webgl构建中我的手形光标没有显示。所以我接受了@programmer的答案,这是对我有用的修改版本:
#if UNITY_WEBGL
float xspot = cursor.width / 2;
float yspot = cursor.height / 2;
Vector2 hotSpot = new Vector2(xspot, yspot);
Cursor.SetCursor(cursor, hotSpot, CursorMode.ForceSoftware);
#else
Cursor.SetCursor(cursor, Vector2.zero, CursorMode.Auto);
#endif
通过设置图像的附加步骤,我在图像导入设置中将图像尺寸设置为32。