Return 来自 UnityWebGL jslib 的字符串
Return string from UnityWebGL jslib
我想用jslib获取url参数
这样的代码
jslib
GetUrl: function(){
var s ="";
var strUrl = window.location.search;
var getSearch = strUrl.split("?");
var getPara = getSearch[1].split("&");
var v1 = getPara[0].split("=");
alert(v1[1]);
return v1[1];
},
});
c#
[DllImport("__Internal")]
public static extern string GetUrl();
void Start () {
TextShow.text = GetUrl();
}
当 运行 来自 jslib 的警报时,我看到警报中显示正确的字符串,但 UGUI 文本不显示任何内容。
为什么会这样?
到return string
从Javascript到Unity,你必须使用_malloc
分配内存然后writeStringToMemory
复制string
v1[1]
变量中的数据到新分配的内存中,然后 return 那。
GetUrl: function()
{
var s ="";
var strUrl = window.location.search;
var getSearch = strUrl.split("?");
var getPara = getSearch[1].split("&");
var v1 = getPara[0].split("=");
alert(v1[1]);
//Allocate memory space
var buffer = _malloc(lengthBytesUTF8(v1[1]) + 1);
//Copy old data to the new one then return it
writeStringToMemory(v1[1], buffer);
return buffer;
}
writeStringToMemory
函数现在似乎是 deprecated,但您仍然可以用 stringToUTF8
做同样的事情,并在其第三个参数中证明字符串的大小。
GetUrl: function()
{
var s ="";
var strUrl = window.location.search;
var getSearch = strUrl.split("?");
var getPara = getSearch[1].split("&");
var v1 = getPara[0].split("=");
alert(v1[1]);
//Get size of the string
var bufferSize = lengthBytesUTF8(v1[1]) + 1;
//Allocate memory space
var buffer = _malloc(bufferSize);
//Copy old data to the new one then return it
stringToUTF8(v1[1], buffer, bufferSize);
return buffer;
}
我想用jslib获取url参数
这样的代码
jslib
GetUrl: function(){
var s ="";
var strUrl = window.location.search;
var getSearch = strUrl.split("?");
var getPara = getSearch[1].split("&");
var v1 = getPara[0].split("=");
alert(v1[1]);
return v1[1];
},
});
c#
[DllImport("__Internal")]
public static extern string GetUrl();
void Start () {
TextShow.text = GetUrl();
}
当 运行 来自 jslib 的警报时,我看到警报中显示正确的字符串,但 UGUI 文本不显示任何内容。
为什么会这样?
到return string
从Javascript到Unity,你必须使用_malloc
分配内存然后writeStringToMemory
复制string
v1[1]
变量中的数据到新分配的内存中,然后 return 那。
GetUrl: function()
{
var s ="";
var strUrl = window.location.search;
var getSearch = strUrl.split("?");
var getPara = getSearch[1].split("&");
var v1 = getPara[0].split("=");
alert(v1[1]);
//Allocate memory space
var buffer = _malloc(lengthBytesUTF8(v1[1]) + 1);
//Copy old data to the new one then return it
writeStringToMemory(v1[1], buffer);
return buffer;
}
writeStringToMemory
函数现在似乎是 deprecated,但您仍然可以用 stringToUTF8
做同样的事情,并在其第三个参数中证明字符串的大小。
GetUrl: function()
{
var s ="";
var strUrl = window.location.search;
var getSearch = strUrl.split("?");
var getPara = getSearch[1].split("&");
var v1 = getPara[0].split("=");
alert(v1[1]);
//Get size of the string
var bufferSize = lengthBytesUTF8(v1[1]) + 1;
//Allocate memory space
var buffer = _malloc(bufferSize);
//Copy old data to the new one then return it
stringToUTF8(v1[1], buffer, bufferSize);
return buffer;
}