unity5.6 是不是不能unity3d 发布 网页网页版

首先还是构建选项,在”Player Settings”里。
Resolution and Presentation和老的web player没啥变化,你可以把你自制的模板放到
“\Unity\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\WebGLTemplates”目录里面,具体用法以后慢慢填坑。
other settings,其他设置中,和其他平台有些不一样,值得注意的是这个”Strip Engine Code”,剥离引擎代码的选项。
官方文档是这样描述它的”如果被选中,unity会默认剥离在项目中不会使用的组件”,也就是说,假如你的项目中没有音频功能,unity会在封装的时候去掉这部分代码以减少大小。
乍一听感觉,哎哟,不错哦!其实unity默认也是勾选这个选项的,但是如果你的项目中使用到了资源包”AssetBundles”进行动态加载,就有可能掉进坑里。
因为代码被剥离了,到时候在网页上一跑,F12打开调试就能看到满面红光。
这时候有2个办法,一个是在工程文件目录中,建一个link.xml文件,内容如下
“UnityEngine.Collider”就是要引用的class,引用其他的UnityEngine.UI….以此类推
点击这里,转到官方link.xml的解释文档
fullname="UnityEngine"&
fullname="UnityEngine.Collider" preserve="all"/&
将文件保存到unity工程的Assets文件夹中
第二个方法是干脆去掉剥离代码的选项,构建体积会有所增大,但如果上面方法没能解决问题,这或许是最后的办法。
接着来到”publishing settings”,发布设置,在我当前版本unity5.4中,只留下了三个选项
第一个是webgl可用内存大小的分配,单位是MB,如果太小运行一阵子会出现内存溢出的错误警告,设置太多也不合适,内存吃紧的机器上估计就gameover了
个人建议在”64-512”之间,默认的是256,其实简单的项目已经足够使用了,这里设置的值在封装以后也可以在index.html文件中修改,具体位置位于页面底部的“script”标签中
单位是字节(b),因为webgl构建速度很慢,如果要对这个参数进行调整,可以直接修改页面,省去了大把时间。&&&
&script type='text/javascript'&
var Module = {
TOTAL_MEMORY: , //这个就是可用内存大小
errorhandler: null,
compatibilitycheck: null,
dataUrl: "/Release/..",
codeUrl: "/Release/..",
memUrl: "/Release/..",
&/script&&
&第二个参数”Enable Exceptions”,也就是异常捕获的一个开关,调试期间可以打开,最终产品发布的时候需要去掉。
共有三个选项
Explicitly Thrown Exceptions Only:也就是默认选项,只处理脚本中throw部分的代码,同时也会增大代码体积。
Full:顾名思义,会捕获所有的调试信息,官方文档说,除了代码中的throw,还会将空的引用,非法索引数组,堆栈信息一同捕获。转载于
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:188次
排名:千里之外Unity 5.6测试版发布-GAD腾讯游戏开发者平台软件开发(16)
unity3d开发(29)
用unity制作的产品发布成网页版,里面内嵌的UI需要做适应,当网页的分辨率发生变化的时候,或者屏幕大小发生变化的时候,能够让UI面板清楚出现在视野之中,而不需要去寻找,需要对发布出来的.html文件进行修改,参考了网上的一篇文章,进行了实验,直接进行部分内容的替换即可。
默认代码内容如下:
&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&
xmlns="http://www.w3.org/1999/xhtml"&
http-equiv="Content-Type" content="text/ charset=utf-8"&
&Unity Web Player | UGUITest&
type='text/javascript' src='https://ssl-/download_webplayer-3.x/3.0/uo/jquery.min.js'&&
type="text/javascript"&
var unityObjectUrl = "/download_webplayer-3.x/3.0/uo/UnityObject2.js";
if (document.location.protocol == 'https:')
unityObjectUrl = unityObjectUrl.replace("http://", "https://ssl-");
document.write('&script type="text\/javascript" src="' + unityObjectUrl + '"&&\/script&');
type="text/javascript"&
var config = {
width: 1280,
height: 960,
params: { enableDebugging:"0" }
var u = new UnityObject2(config);
jQuery(function() {
var $missingScreen = jQuery("#unityPlayer").find(".missing");
var $brokenScreen = jQuery("#unityPlayer").find(".broken");
$missingScreen.hide();
$brokenScreen.hide();
u.observeProgress(function (progress) {
switch(progress.pluginStatus) {
case "broken":
$brokenScreen.find("a").click(function (e) {
e.stopPropagation();
e.preventDefault();
u.installPlugin();
return false;
$brokenScreen.show();
case "missing":
$missingScreen.find("a").click(function (e) {
e.stopPropagation();
e.preventDefault();
u.installPlugin();
return false;
$missingScreen.show();
case "installed":
$missingScreen.remove();
case "first":
u.initPlugin(jQuery("#unityPlayer")[0], "ttt.unity3d");
type="text/css"&
font-family: Helvetica, Verdana, Arial, sans-serif;
background-color: white;
color: black;
text-align: center;
:link, :visited {
color: #000;
:active, :hover {
color: #666;
font-size: small;
font-weight: bold;
font-size: x-small;
.content {
margin: auto;
width: 1280px;
.missing {
margin: auto;
position: relative;
width: 193px;
height: 63px;
position: relative;
top: -31px;
border-width: 0px;
display: none;
#unityPlayer {
cursor: default;
height: 960px;
width: 1280px;
class="header"&&Unity Web Player | &UGUITest&
class="content"&
id="unityPlayer"&
class="missing"&
href="/webplayer/" title="Unity Web Player. Install now!"&
alt="Unity Web Player. Install now!" src="/installation/getunity.png" width="193" height="63" /&
class="broken"&
href="/webplayer/" title="Unity Web Player. Install now! Restart your browser after install."&
alt="Unity Web Player. Install now! Restart your browser after install." src="/installation/getunityrestart.png" width="193" height="63" /&
class="footer"&& created with
href="/unity/" title="Go "&Unity& &&
将代码从script type=”text/javascript”处开始替换,直到最后一个标签body处,全部替换完成即可达到需要的效果。
type="text/javascript"&
var config = {
width: '100%',
height: '100%'
var u = new UnityObject2(config);
jQuery(function() {
u.initPlugin(jQuery("#unityPlayer")[0], "ttt.unity3d");
type="text/css"&
height: 100%;
margin: 0px auto;
#unityPlayer {
width: 100%;
margin: 0 auto;
background: #FFFF00;
height: 100%;
id="unityPlayer"&
需要注意的一点就是initPlugin函数的参数”ttt.unity3d”是根据自己对项目的命名来的。
以上内容参考了博客:
接下来的内容是为网页添加Logo还有去除右键提示的功能。
只需要在Var config中加入以下内容:
params: { backgroundcolor: “000000”, logoimage: “logo.png”, bordercolor: “000000”, disableContextMenu: true },
把图标放到对应文件夹中就完成了。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:23408次
排名:千里之外
原创:34篇
(5)(1)(1)(1)(8)(1)(4)(5)(2)(1)(1)(1)(3)(1)(1)(1)主题信息(必填)
主题描述(最多限制在50个字符)
申请人信息(必填)
申请信息已提交审核,请注意查收邮件,我们会尽快给您反馈。
如有疑问,请联系
CSDN &《程序员》编辑/记者,投稿&纠错等事宜请致邮
你只管努力,剩下的交给时光!
如今的编程是一场程序员和上帝的竞赛,程序员要开发出更大更好、傻瓜都会用到软件。而上帝在努力创造出更大更傻的傻瓜。目前为止,上帝是赢的。个人网站:。个人QQ群:、
个人大数据技术博客:
北京时间 4 月 1 日,Unity Technologies 正式发布了最新版的 Unity 5.6 引擎,这也是 Unity 5.x 系列的最后一个版本。其中包括改进的 2D 功能、更好的图形性能、新的视频播放器、Progressive Lightmapper 预览版,新的光照模式,以及对 Facebook Gameroom 和 Google DayDream 平台的支持。自 至今,今天发布的 5.6 正式为 Unity 5.x 画上了句号。接下来,一起看看最新的 Unity 5.6 为我们带来了哪些全新的功能特性。主要为:Progressive Lightmapper(预览)Unity 5.6 最值得注意的功能之一是基于路径追踪的新解决方案 Progressive Lightmapper。它使烘焙照明可以快速迭代,并可以预测大概结束时间。在 Unity 5.6 中,它将作为一个预览功能发布。新灯光模式替换混合模式照明灯光模式正在取代混合模式照明,这使得烘焙照明可以与实时照明相融合,包括烘焙和实时阴影。 Unity 5.6 提供了多种预设,以涵盖广泛的场景,包括完全实时 GI 照明,部分烘焙照明和完全烘焙的照明。同时,添加了烘焙阴影遮罩的能力,提供“超越实时阴影距离”的阴影。这大大减少了实时阴影距离,提高了性能。对远距离阴影与实时镜面高光的支持可以实现更高的视觉逼真度。已经为每个灯光类型和渲染路径添加了实时阴影淡出,并且从实时阴影转换到阴影遮罩是无缝的。混合灯光模式:
在间接烘焙模式下,混合灯光表现为实时动态灯光,并附加由烘焙光照贴图和光线探测器采样而来的间接照明。像雾这样的效果可以用于超越实时阴影距离。
在 Shadowmask 模式下,混合灯光是实时的,静态对象投射的阴影被烘焙成阴影纹理和光线探测器。这种模式大大减少了渲染阴影投射物的数量,并仍能在远处产生阴影。然而,静态对象在动态对象上产生的阴影质量不是很高。
Distance Shadowmask 是一种混合模式,允许动态对象接收来自静态对象的高质量阴影,以及超越实时阴影距离的预计算阴影。为此,从静态对象投射的阴影在阴影遮罩纹理和光线探测器中进行预计算。然而,在阴影距离内,动态和静态对象都将使用实时阴影贴图进行渲染。距离之外的阴影将使用预计算阴影,两者之间平滑过渡。间接照明从预计算光照贴图和光线探测器采样。
在 Subtractive 模式下,直接照明被烘焙到光照贴图中,因此静态对象将不会有来自混合光的镜面或光亮的高光。但是,动态对象将被实时照亮,并通过光线探测器从静态对象接收预计算的阴影。主定向光允许动态对象在静态对象上投射减色实时阴影。
同时,Unity 5.6 还重新设计了照明窗口以增强可用性,并添加了一个新的 Light Explorer 窗口,以简化照明艺术家的工作。支持 Vulkan - 将图形性能提升到一个新的水平,并增加了移动设备的电池寿命Vulkan 是新一代的图形和计算 API,可在台式机和移动平台上提供高效、跨平台的现代 GPU 功能。它通过多线程并行来充分利用多个 CPU 内核,在使速度提高的同时,减少了驱动程序开销和 CPU 工作负载,使 CPU 可以更好地进行额外的计算或渲染。Vulkan 的另一个优点是比使用 OpenGL ES 渲染相同内容的功耗更低。Vulkan 消耗的平均电量是 OpenGL ES 的 88-90%,因此可以增加“10-12%的额外播放时间”。目前,Unity 5.6 已经在 Android、Windows 和 Linux 平台上添加了 Vulkan 支持,同时还增加了 Vulkan 对 OpenVR 的初步支持。TextMesh Pro 即将集成到 Unity,免费使用TextMesh Pro 使用签名距离字段(SDF)作为其主要的文本渲染管线,使得可以以任何点大小和分辨率清晰地渲染文本。使用一组利用 SDF 文本渲染功能的自定义着色器,TextMesh Pro 可以通过简单地更改材质属性来动态地更改文本的视觉外观。添加视觉风格,如扩张、轮廓、柔和阴影、斜面、纹理、发光等,并通过创建/使用材质预设来保存并调用这些视觉风格。TextMesh Pro 提供对文本布局和格式设置的改进控制,使用户可以控制字符、字、行和段落间距,支持字距和基本连字,以及附加文本对齐模式,如对齐和刷新文本。超过 30 个富文本标签可用于让用户控制边距、缩进,用户可自定义样式、链接,甚至支持使用多个字体和图形与文本混合。图形改进:实例化Unity 5.6 还包括对图形各方面的大量改进,包括粒子系统和 GPU Instancing。在 5.4 和 5.5 中引入的 GPU Instancing 允许用户在单个绘制调用中使用实例着色器绘制相同网格的许多实例,同时仍允许每个实例拥有各自的数据集,包括位置,旋转和颜色。当 GPU 成为限制游戏帧率的因素时,实例化可以提供显著的性能优势。改进粒子系统在 Unity 5.5 中,用户能为粒子添加自定义数据,而这些数据可以从脚本和着色器访问。在 5.6 中,这个系统得到了扩展。现在,用户可以在 Inspector 中直接配置数据,从而很容易地创建曲线和颜色应用在脚本和着色器中以驱动自定义逻辑。更进一步,本模块中定义的颜色还可以使用高动态范围。并且,Unity 5.6 还支持并行处理多个粒子系统,以改进工作流程。为 Metal 添加 Compute Shader 支持Unity 5.6 为 iOS 和 MacOS 添加了对 Metal Compute Shader 的支持。计算着色器由 HLSL 编写,就如 Unity 中的其他图形 API 一样,它们最终都会转换为 Metal Shading Language(目前仅限于 Metal v1.1)。新的后期处理栈新的后处理栈已发布,支持 Unity 5.6 及 5.5。用户可以从 Asset Store 免费获取。它将一套完整的图像效果组合到一个后期流程中。这种做法的优点是:效果顺序配置始终正确;
允许将许多效果合并到单个 pass;
具有基于资源的配置系统,便于预置管理;
所有效果在 UI 中分组在一起,用户体验更好。它具有以下效果:
Antialiasing(抗锯齿,FXAA、Temporal AA)
Ambient Occlusion(环境光遮蔽)
Screen Space Reflections(屏幕空间反射)
Fog(烟雾)
Depth of Field(景深)
Motion Blur(运动模糊)
Eye Adaptation(眼适应)
Bloom(虚化)
Color Grading(颜色分级)
User Lut(摄影表)
Chromatic Aberration(色差)
Grain(粒度)
Vignette(晕影)
Dithering(抖动)
该工具还包括一组监视器和调试视图,可以帮助用户正确设置效果并调试输出中的问题。具有 4k 视频播放能力的新视频播放器Unity 5.6 包含一个全新的视频播放器,全新架构平切添加了硬件加速。即使是普通的手持设备,现在也可以播放支持 Alpha 通道的高分辨率 4K 视频。它支持目前被广泛使用的 H.264 / AAC 编解码器,在无法使用 H.264 / AAC 的情况下则会使用 VP8 / Vorbis。NavMesh:改进的寻路和 AIUnity 5.6 引入了底层 API,旨在解决以前版本的限制。这些改进为角色和 AI 导航提供了一整套新的用例和游戏选项。此外,底层 API 还提供四种新的易于使用的组件,。能将 Unity 的 NavMesh 功能应用到动态生成或动态加载的内容上是开发者呼声最高的功能。 利用 5.6 中的新功能,这不仅成为可能,而且简单高效。只需加载或生成场景,然后让 NavMesh 进行烘焙即可。2D 物理改进和功能对于 2D 物理引擎,内部 2D 碰撞处理系统已经被完全重写,可提供更强大和可靠的碰撞测试,确保在所有条件下都能正确的获得 Enter、Stay 和 Exit 回调状态。在 2D 物理引擎 API 的众多改进之中,几个特性脱颖而出:
能够检索 Rigidbody2D 或 Collider2D 的所有碰撞结果,可以返回完整的碰撞详细信息或只返回碰撞中的 Collider2D。
添加了一个名为 ContactFilter2D 的新类型,可用于所有物理查询。 这允许通过层掩码、碰撞法线角度、Collider2D Z 深度等快速过滤结果,以及现在接受新的 ContactFilter2D 的新的非分配重载,如 Linecast,Raycast,BoxCast, CircleCast,CapsuleCast,OverlapPoint,OverlapCircle,OverlapBox,OverlapArea,OverlapCapsule,GetContacts&IsTouching。 用于过滤的示例用法包括:询问玩家是否沿特定方向触摸特定图层; 如果 Collider2D 区域在特定层上有任何接触,或者 Rigidbody2D 在特定方向上有任何接触。
检索所有 Collider2D 与其他 Collider2D 重叠的能力,并附加到特定的 Rigidbody2D,或使用新的 OverlapCollider 功能重叠特定的 Collider2D。
检索当前连接到 Rigidbody2D 的所有 Collider2D 的能力。
可视化调试物理有时可能难以判断场景中的哪些对象应该或者不应该碰撞,特别是当渲染和碰撞网格不同步时。 为了帮助用户快速检查场景中的碰撞几何体,Unity 5.6 添加了物理碰撞的调试视图模式。它旨在为用户提供一个在 Unity 场景中快速找到与碰撞相对应的碰撞体。它也可以作为一个分析工具,因为它可以隐藏所有不被使用的 Rigidbodies,以及显示所有凹面网格的 MeshColliders。物理引擎的反穿透方法和改进的编辑器 UIUnity 5.6 添加了两个新的方法:<putePenetration 和 Physics.ClosestPoint,以帮助编写自定义的反穿透方法。这对创建自定义角色控制器以及需要额外控制如何对周围的碰撞体做出反馈的游戏代码很有帮助。 目前场景中有一个正在移动的球体和一个静止不动的胶囊。球体在与胶囊重叠的情况下,沿着胶囊转动。在球体中心有一条红色的光线,显示球体需要翻转的方向和距离,以便与胶囊完全分离。此外,Unity 5.6 还统一了在场景视图中编辑原始 2D 和 3D Colliders 的交互式手柄。 他们现在都使用相同的逻辑并支持新的修改键(Shift 和 Alt),使编辑碰撞体的尺寸,将中心固定到位,或者从任何方向均匀地缩放形状变得容易。同时,添加了 TreeView IMGUI 控件,可以显示展开和折叠的分层数据。用户可以使用 TreeView 为编辑器窗口创建高度可定制的列表视图和多列表,可以与其他 IMGUI 控件和组件一起使用,或自定义行内容渲染、拖动逻辑、选择逻辑、搜索、排序和重命名项目。Unity 5.6 改进了为每个 UI 元素发送到 GPU 的数据量,向 Canvas 添加了一个新的“AdditionalShaderProperties”。 这会更改创建的所有新 Canvas 组件的默认行为,并减少渲染画布的内存成本,因为排除了其他未使用的通道。如果您正在使用 ,您会注意到,现在可以自动检测带有 Unity 工作负载的安装,并显示并添加到“外部脚本编辑器”列表中。Google Daydream&Cardboard VR 支持5.6 原生支持 iOS 和 Android 版本的 Google Cardboard VR,和支持 Android 上 Google Daydream VR 平台。为了从 Daydream 平台获得最佳性能和延迟,Unity 与 Google VR NDK 集成,以利用该平台的异步重放和 VR 性能模式。与 Google I/O 发布的 Google VR SDK for Unity 中的 Daydream 支持相比,Unity 5.6 现在提供了一个更简化的工作流程,进行了显著的优化和减少了延迟。无需添加任何预制体,脚本或修改 manifest 文件即可开始使用——只需启用 VR 并将 Daydream 添加为目标平台,就可以开始制作自己的虚拟世界。同时,Unity 5.6 支持轻松地切换和退出 VR 模式,以便应用程序可以轻松扩展到完整的 Google VR 受众群体,并原生支持 Google Cardboard,针对 Cardboard 的应用程序可以在较老的设备上运行。目前,Cardboard 的支持是专门针对 Android 的,iOS Cardboard 支持即将推出。支持 Facebook Gameroom通过 Gameroom,Facebook 为开发人员提供了一种更轻松的方法,将高质量的游戏带入 PC,并且让游戏可以充分利用 PC 的 CPU 和 GPU 的能力。开发者现在可以将自己的项目作为原生 Windows 应用发布到 Facebook Gameroom,或者使用 Unity 的 WebGL 支持发布到 。WebAssembly 的实验性支持WebAssembly 是一种新的跨浏览器技术,旨在帮助改进 Unity WebGL 体验。尽管从技术上将其定义为一种新的独立的标准,但从 Unity 的角度来看,WebAssembly 本质上是 asm.js JavaScript 子集的字节码格式(asm.js 用于将 Unity 代码部署到 WebGL)。与当前使用的基于文本的表示相比,字节码格式显著地减少了编译为 asm.js 代码的大小。这将使代码下载更快,更重要的是,能够更快地解析和编译代码,使用更少的内存。这将改善大型已编译 JavaScript 代码库的启动时间,并减少其内存需求——这两个都是开发者在 WebGL 平台面临的常见问题。改进 Unity Multiplayer 多人联网Unity 5.6 包含对现有 Unity Multiplayer 功能的优化和稳定性的改进。值得注意的是,在不太可靠的网络条件下运行时,Unity 已经提高了稳定性。大多数更改是透明的,不会影响已有游戏所用的网络 API 的实现。除了与编辑器相关的修改之外,Unity 还对 Multiplayer 文档进行了改进,制作了一些新的学习材质,并开始了新功能的基础工作。更多 Unity 5.6 新功能与亮点,可查阅:Unity 5.6 宣告 Unity 5.x 周期结束,那么,Unity 2017 将有哪些新功能?更多 Unity 引擎精彩内容与绝密技巧,尽在 Unite 2017 Shanghai:。3719人阅读
Unity3D(159)
发布网页版,Unity3D自适应网页大小。这个问题困扰了我很长时间,今天终于把他解决了,给大家分享一下。
这里用Uinty4.0发布网页版,我去掉了里面的标题和下载连接地址的Div,目的是让代码看起来易懂。
自适应网页大小与发布网页时PlayerSettings设置的width和height大小无关,只要讲网页里面的标注的代码设置好,就可以实现u3d自适应网页大小。
&!DOCTYPE html PUBLIC &-//W3C//DTD XHTML 1.0 Strict//EN& &http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&&
&html xmlns=&http://www.w3.org/1999/xhtml&&
&meta http-equiv=&Content-Type& content=&text/ charset=utf-8&&
&title&Unity Web Player | ceshiExt&/title&
&script type='text/javascript' src='/ajax/libs/jquery/1.7.2/jquery.min.js'&&/script&
&script type=&text/javascript&&
var unityObjectUrl = &/download_webplayer-3.x/3.0/uo/UnityObject2.js&;
if (document.location.protocol == 'https:')
unityObjectUrl = unityObjectUrl.replace(&http://&, &https://ssl-&);
document.write('&script type=&text\/javascript& src=&' &#43; unityObjectUrl &#43; '&&&\/script&');
&script type=&text/javascript&&
var config = {
width: '100%', //设置成100%
height: '100%' //设置成100%
var u = new UnityObject2(config);
jQuery(function() {
u.initPlugin(jQuery(&#unityPlayer&)[0], &Decor.unity3d&);
&style type=&text/css&&
html,body{ height:100%; margin:0} //注意这段样式是后添加进来的
div#unityPlayer {
width: 100%; //设置成100%
background: #FFFF00;
height: 100%; //设置成100%
&div id=&unityPlayer&&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1554937次
积分:20351
积分:20351
排名:第398名
原创:409篇
转载:215篇
评论:403条
我叫小未,网名Aladdin,主做U3D游戏程序,不甘于平庸,喜欢尝试,喜欢研究计算机技术,13年9月份开始工作,曾两年就职于巨人网络做游戏客户端程序,闲暇时间做过麦子学院在线讲师,做过独立开发,做过C#游戏服务器和.NET Web服务器,做过IOS原生开发,爱游戏,爱coding!
学习交流群:
unity3D:(满员),;
阅读:9830
文章:10篇
阅读:20413
文章:12篇
阅读:16497
文章:24篇
阅读:133025
文章:13篇
阅读:25547
文章:31篇
阅读:84959
文章:34篇
阅读:60907
文章:20篇
阅读:47873
(1)(2)(3)(1)(1)(2)(9)(2)(1)(3)(3)(1)(2)(1)(1)(3)(2)(2)(1)(1)(1)(3)(1)(1)(3)(1)(4)(2)(6)(17)(12)(13)(17)(12)(24)(32)(58)(42)(12)(48)(126)(33)(2)(2)(13)(9)(15)(5)(12)(14)(17)(5)(1)(1)(17)(2)(2)}

我要回帖

更多关于 unity发布网页 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信