Unity WebGL中文输入插件 支持输入法跟随 支持全屏

由于Unity WebGL本身不能很好的支持中文输入,拷贝,输入法跟随,然后网上找的插件,大多不令人满意,于是决定自己开发一个~

//2020年2月26日修改:
由于之前1.0版本的插件在Unity2019.2.4版本中打包,没有在低版本测试,导致有些使用低版本(2019以下的)的朋友无法使用,会出现missing的问题,Unity的高低版本在UI和WebGL也存在点差异,现在我重新打包一个1.1版本的插件,感谢大家的评论~

自研插件名称:ChineseInputWebGL1.1.unitypackage 插件下载

支持功能
1.中英文输入
2.支持光标移动中间插入输入
3.输入法跟随
4.支持Ctrl+C(拷贝),Ctrl+V(粘贴),Ctrl+X(裁剪)等键盘操作
5.支持WebGL全屏

主要思路:在unity WebGL打包浏览页面的对应位置,动态创建一个Html的Input控件,去实现功能

主要效果图
中文输入,输入法跟随:
在这里插入图片描述
拷贝:
在这里插入图片描述

主要代码
js部分:

var ChineseInputWebGL = {
   
	$input:null,
	$canvas:null,
	$unityContainer:null,
	$webglcontent:null,
	$unityGameObjectName : "",
	$unityInputID: "",
	$Inputing: function()
	{
   
		if(unityGameObjectName!=null&&unityInputID!=null && input != null)
		{
   
			var strvalue = unityInputID+"|"+input.value+"|"+input.selectionStart;
			SendMessage(unityGameObjectName, "OnInputText", strvalue);
		}
	},
	$InputEnd: function()
	{
   
		if(unityGameObjectName!=null&&unityInputID!=null && input != null)
		{
   
			SendMessage(unityGameObjectName,"OnInputEnd",unityInputID.toString());
		}
		document.onkeydown=null;
	},
	InputShow: function(GameObjectName_,inputID_,v_,fontsizeT_,indexStr_,inputRectStr_)
	{
   				
		var GameObjectName = Pointer_stringify(GameObjectName_);
		var inputID = Pointer_stringify(inputID_);
		var v = Pointer_stringify(v_);
		var fontsizeT = Pointer_stringify(fontsizeT_);
		var indexStr=Pointer_stringify(indexStr_);
		var inputRectStr = Pointer_stringify(inputRectStr_);

		var indexArr=indexStr.split("|");
		var startIndexT = indexArr[0];
		var endIndexT = indexArr[1];
		
		var inputRectArr=inputRectStr.split("|");
		var posX = inputRectArr[0];
		var posY = inputRectArr[1];
		var width = inputRectArr[2];
		var height = inputRectArr[3];

		if(input==null){
   
			input = document.createElement("input");
  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 38
    评论
Unity WebGL 平台对于全屏输入汉字有一些限制和挑战。 首先,Unity WebGL 所使用的技术是基于 HTML5 和 JavaScript 的,而标准的 HTML5 输入元素通常无法正确处理汉字的输入。这是因为 HTML5 的输入元素使用的是 Unicode 字符集,而汉字通常需要多个 Unicode 字符来表示,导致输入框无法正确处理输入。 其次,Unity WebGL 平台在全屏模式下需要处理输入事件,包括键盘输入。虽然可以使用标准的 JavaScript 事件处理机制来处理键盘输入,但是这样可能会导致一些兼容性问题。尤其是在全屏模式下,浏览器对于键盘事件的处理方式可能不一致。 有一种可行的方法是使用 JavaScript 库或插件来实现全屏输入汉字。这些库或插件可以提供自定义的输入框,并通过特殊的技术来处理汉字输入。例如,可以使用 CJKInput 插件来实现汉字输入支持。这种方法可以通过监听输入事件并转换为正确的汉字输入。 另一种方法是利用 WebGL 平台的特性实现自定义的汉字输入功能。可以通过在游戏场景中创建自定义的输入框,然后将输入的字符串转换为汉字。这需要对汉字字符集和输入法进行详细的处理和转换。 总之,在 Unity WebGL 平台上实现全屏输入汉字是有一些挑战的,需要使用特殊的技术或插件来处理。由于涉及到 Unicode 字符集和浏览器兼容性问题,开发者需要谨慎处理,并确保在不同浏览器和设备上都能正确输入汉字。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值