| 
 | 
 
那个例子有个问题就是,如果你传过来的数据带中文,到了u3d里,执行到 
  var jsonObj1=eval(getwww.data); 
这一步的时候就会出错。原因是unity3d不支持\u转义,而json_encode函数在encode的时候就直接把中文变成了\u1234这种形式。 
 
其实很好解决,echo之前先把转义的字符串变成中文就行了。unity3d不是浏览器,应该调用WWW的时候直接读的二进制数据,所以不会出错。 
 
 
   
 
附图里面的“测试”两个字就是json直接传的。 
 
js_unescape这个函数是我抄来的……简单改了改 
 
php代码: 
[mw_shl_code=php,true]<?php 
$arr=array( 
      'username' => '测试', 
      'password' => 'bar' 
); 
echo  js_unescape(json_encode($arr)); 
function js_unescape($str) 
{ 
        $ret = ''; 
        $len = strlen($str); 
        for ($i = 0; $i < $len; $i++) 
        { 
                if ($str[$i] == '\\' && $str[$i+1] == 'u') 
                { 
                        $val = hexdec(substr($str, $i+2, 4)); 
                        if ($val < 0x7f) $ret .= chr($val); 
                        else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f)); 
                        else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f)); 
                        $i += 5; 
                } 
                else $ret .= $str[$i]; 
        } 
        return $ret; 
} 
?>[/mw_shl_code]u3d js代码: 
[mw_shl_code=javascript,true]var jsonURL="http://localhost/json/demo.php"; 
var show; 
var chineseSkin : GUISkin; 
function Start(){ 
//获取json数据的方法 
  var getwww : WWW = new WWW (jsonURL); 
  yield getwww; 
  print (getwww.data); 
  var jsonObj1=eval(getwww.data); 
  print (jsonObj1["username"]); 
show=jsonObj1["username"]; 
} 
function OnGUI(){ 
          GUI.skin=chineseSkin; 
          GUI.Button(Rect(10,10,100,20),show); 
}[/mw_shl_code]需要字体才能显示出中文。另外注意.php文件的编码要设置成utf-8,u3d的js文件编码最好也设置成utf8。 
===== 
另外,上面链接的那个使用json的方法,对于树形结构同样有效: 
比如改成[mw_shl_code=php,true]$arr=array( 
      'username' => '你好', 
      'password' => 'bar', 
     'a' => array( 
              "name" => "aaa", 
              "pass" => "bbb" 
      ) 
);[/mw_shl_code][mw_shl_code=csharp,true]print (jsonObj1["a"]["name"]);[/mw_shl_code]例如数据库查询结果,3条记录,每条记录里面包含姓名,性别,年龄。这个json也能取得后返回u3d吗?  
 
  
是完全可以的,忘了xml吧。不过从u3d传到web上目前我那个代码没实现json树形结构,只能传递1层的,改改应该也可以实现。  
 |   
 
 
 
 |