[Unity3d]Unity web平台 SecurityException报错解决办法

简介: 最近被一个问题困扰了好久,连续三天都一直在想办法解决,各种能参考的资料都看了,包括硬着头皮看全英文的官网,努力寻求解决办法,昨晚搞到凌晨深夜两点可还是失望的离开了办公室,到底是什么问题呢?我相信如果Unity3D做网络游戏或者动态加载资源的同志们都会碰到,那就是U...

最近被一个问题困扰了好久,连续三天都一直在想办法解决,各种能参考的资料都看了,包括硬着头皮看全英文的官网,努力寻求解决办法,昨晚搞到凌晨深夜两点可还是失望的离开了办公室,到底是什么问题呢?我相信如果Unity3D做网络游戏或者动态加载资源的同志们都会碰到,那就是Unity3d动态加载资源然后切换到web平台会报错,关于security的一个错误,官方的解释是:http://docs.unity3d.com/Documentation/Manual/SecuritySandbox.html,努力看看英文吧,相信会有帮助!


目的:为了Unity3D能动态加载模型资源,切换到web平台也能正常加载到场景中!

步骤:

一开始我做的方案一,就是Unity3D直接访问远程mysql数据库,但后来发现切换到web平台会报错,而且解决起来比较麻烦,也不知道是否有人解决了没,然后咨询有过网游开发经验的大牛,他说一般公司开发都是会搭建一个中间层服务器,php或者.net或者其他,通过这个中间层服务器来访问数据库并且返回打包的数据,因此就听了大牛的建议然后果断去搭建.net服务器,这个我还比较熟悉一些,之前搞过一年多的.net,然后中间层服务器搭建好了,url是http://192.168.1.6/plusFile/Test.aspx,Unity3D中通过www的方法获取aspx返回的数据库中模型的路径,关于模型我是放在额外自己新建的一个ftp服务器上,地址是http://114.92.247.6/xiaowei,上面有一个模型,当然我已经打包成unity3d格式的了,按理的话应该是动态加载fbx的的模型资源,但是这个还有待探索中,如果有知道的同志,还望指导我一下。关于.net服务器的搭建就不多说了,当然也可以用php或者jsp。

Unity3D代码:

using UnityEngine;
using System.Collections;
using System.Text;

public class NewBehaviourScript : MonoBehaviour
{

    string s;
    private GameObject obj;
    private WWW www;
    private string url = @"http://192.168.1.6/plusFile/Test.aspx";
    private string url1 = "http://114.92.247.6/xiaowei/ok.unity3d";

    void Start()
    {

    }

    void OnGUI()
    {
        if (GUI.Button(new Rect(20, 20, 100, 40), "加载"))
        {
            StartCoroutine(getURL(url));
            print("2");
        }
    }

    IEnumerator getURL(string url)
    {
        print("3");
        WWW web = new WWW(url);
        yield return web;
		
        Encoding e1 = new ASCIIEncoding();
        this.s = e1.GetString(web.bytes);
        print("web : " + this.s);
        print("--"+web.bytes.Length);
        
		//截取服务器端有用的数据
		print("s:length"+s.Length+"url1:length:"+url1.Length);
        //this.s = web.text;
		this.s = s.Substring(0,38);
		print(s.Length);
        StartCoroutine(getModel(s));
        print(url1+"|"+this.s);
        print(this.s.Length);
    }


    IEnumerator getModel(string str)
    {
        print(str.Length);
        this.www = new WWW(str);

        yield return this.www;
        print(www.bytes.Length);
        obj = GameObject.Instantiate(www.assetBundle.mainAsset) as GameObject;
        obj.transform.position = new Vector3(0, 1, 20);
        print(www.bytes.Length);
    }
}


看到这我就有点欣喜了,能够动态加载模型了,但切换到web平台就有问题了,不管怎样就是报错,有关一个Security权限的错误,然后网上查看各种资料,了解到Web Player平台有一个Security SandBox的安全策略,这个可能是为了安全性考虑的吧,配置了一下用户访问资源的一个权限。也就是要在服务器端配置一个crossdomain.xml,大体内容是:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">  
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>

第一个“*”是指权限内的IP,*代表所有IP的客户端都有这个权限,第二个*号指服务器放开所有的端口,主要是一个843端口,通过这个端口来监视客户端的活动的。但之前我怎么配置.net服务器端都发现还是security权限报错,搞了我昨晚凌晨两点才离开办公室,后来发现我的模型资源放在远程的FTP服务器端,那个服务器端也要配置相同的权限,这样一来就没有错误了,恭喜一下自己,终于解决了困惑已久的问题!


关于Unity3D,我们有个专门技术讨论的大群,可以进行技术交流和咨询,群号:375151422     858550 欢迎进行技术讨论,里面有不少大牛


相关文章
|
3月前
|
安全 前端开发 API
【Azure 应用服务】Azure Web App 服务默认支持一些 Weak TLS Ciphers Suite,是否有办法自定义修改呢?
【Azure 应用服务】Azure Web App 服务默认支持一些 Weak TLS Ciphers Suite,是否有办法自定义修改呢?
|
3月前
|
网络安全 图形学 Android开发
Unity与安卓丨AS报错:SSL peer shut down incorrectly
Unity与安卓丨AS报错:SSL peer shut down incorrectly
Unity与安卓丨AS报错:SSL peer shut down incorrectly
|
3月前
|
开发工具 图形学 Android开发
Unity与安卓丨unity报错:SDK Tools version 0.0 < 26.1.1
Unity与安卓丨unity报错:SDK Tools version 0.0 < 26.1.1
|
3月前
|
API Android开发 图形学
UNITY与安卓⭐三、安卓报错答疑合集
UNITY与安卓⭐三、安卓报错答疑合集
|
2月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
153 0
|
3月前
|
开发者 图形学 API
从零起步,深度揭秘:运用Unity引擎及网络编程技术,一步步搭建属于你的实时多人在线对战游戏平台——详尽指南与实战代码解析,带你轻松掌握网络化游戏开发的核心要领与最佳实践路径
【8月更文挑战第31天】构建实时多人对战平台是技术与创意的结合。本文使用成熟的Unity游戏开发引擎,从零开始指导读者搭建简单的实时对战平台。内容涵盖网络架构设计、Unity网络API应用及客户端与服务器通信。首先,创建新项目并选择适合多人游戏的模板,使用推荐的网络传输层。接着,定义基本玩法,如2D多人射击游戏,创建角色预制件并添加Rigidbody2D组件。然后,引入网络身份组件以同步对象状态。通过示例代码展示玩家控制逻辑,包括移动和发射子弹功能。最后,设置服务器端逻辑,处理客户端连接和断开。本文帮助读者掌握构建Unity多人对战平台的核心知识,为进一步开发打下基础。
134 0
|
3月前
|
开发者 图形学 iOS开发
掌握Unity的跨平台部署与发布秘籍,让你的游戏作品在多个平台上大放异彩——从基础设置到高级优化,深入解析一站式游戏开发解决方案的每一个细节,带你领略高效发布流程的魅力所在
【8月更文挑战第31天】跨平台游戏开发是当今游戏产业的热点,尤其在移动设备普及的背景下更为重要。作为领先的游戏开发引擎,Unity以其卓越的跨平台支持能力脱颖而出,能够将游戏轻松部署至iOS、Android、PC、Mac、Web及游戏主机等多个平台。本文通过杂文形式探讨Unity在各平台的部署与发布策略,并提供具体实例,涵盖项目设置、性能优化、打包流程及发布前准备等关键环节,助力开发者充分利用Unity的强大功能,实现多平台游戏开发。
104 0
|
3月前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
3月前
|
监控 Java 应用服务中间件
【Azure 应用服务】App Service中抓取 Web Job 的 DUMP 办法
【Azure 应用服务】App Service中抓取 Web Job 的 DUMP 办法
|
3月前
|
Apache 图形学
WebGL☀️Unity WebGL适配到各平台的教程
WebGL☀️Unity WebGL适配到各平台的教程
下一篇
无影云桌面