我希望用户在Unity WebGL游戏中从计算机中选择一个图像,但我无法获得任何库或代码.我想要UnityWebGL(Runtime)的EditorUtility.OpenFilePanel的确切功能.
string path = EditorUtility.OpenFilePanel("用png覆盖","","png");
有没有办法在Unity WebGL构建中获得这个打开的对话框?或者我有什么方法可以在java脚本中做到这一点?就像我从用户的java脚本中获取图像并将其传递给我的C#代码.
我希望将Unity WebGL项目集成到Angular2应用程序中。将所有这些脚本移至Angular2组件的正确方法是什么?
首先,Unity WebGL像这样导出index.html:
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Unity WebGL Player | Espoo web manager (Prefab preview)</title>
<link rel="shortcut icon" href="TemplateData/favicon.ico">
<link rel="stylesheet" href="TemplateData/style.css">
<script src="TemplateData/UnityProgress.js"></script>
<script src="Build/UnityLoader.js"></script>
<script>
var gameInstance = UnityLoader.instantiate("gameContainer", "Build/builds.json", {onProgress: UnityProgress});
</script>
</head>
<body>
<div class="webgl-content">
<div id="gameContainer" style="width: 960px; height: 600px"></div>
<div class="footer">
<div class="webgl-logo"></div>
<div class="fullscreen" onclick="gameInstance.SetFullscreen(1)"></div>
<div class="title">Espoo web manager (Prefab preview)</div>
</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我开始拆分,首先将样式表移动到模板.css文件中:
@import './webgl-app/TemplateData/style.css';
Run Code Online (Sandbox Code Playgroud)
然后,我将javascript移至组件.ts-file中:
import { Component, AfterViewInit } …Run Code Online (Sandbox Code Playgroud) 我试图使用一些服务器的API函数,突然出现了这个错误.我将在代码示例后解释它:
public IEnumerator Post(Dictionary<string, string> data)
{
var request = UnityWebRequest.Post(Url, data);
request.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");
yield return request.Send();
if (request.isError)
UpdateNetworkLog("Network error has occured: " + request.error);
else
// Some code after success
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,主要是我把它从Unity手动考虑POST请求这里.但是,有一个问题 - 请求从未正确完成,它总是有错误(使用UpdateNetworkLog函数显示):"通用/未知HTTP错误",而请求的响应代码为0.此外,我试图使用遗留本手册中的方法和WWW类获得相同的结果.
我认为,问题在于Unity如何获得响应:我通过Wireshark检查了数据包,我的POST请求和服务器的响应都非常好,没有错误或错误.
另一个重要的问题是我正在使用WebGL,并且编辑器中的所有内容都可以,程序得到正确的响应并正常工作; 只有在浏览器中构建并运行游戏(在Chrome和Safari中测试)后才会出现错误.此外,尝试使用Unity WebGL播放器启动它,但XAMPP:相同.
感谢所有未来的回复,因为Google对此一无所知.
我搜索了互联网,没有任何有用的链接.有人说使用Ad Sense,但我认为如果要发布到FB Canvas(如果我错了,请纠正我)是违反Facebook政策的.有没有可用的插件?或者有没有办法在团结之外将它设置在外部并使用它们来引用它们Application.ExternallCall.
我在Unity中创建了一个游戏并定期将其导出为WebGL.此导出附带的index.html页面包含以下代码部分:
脚本定义
<script src="Build/UnityLoader.js"></script>
<script>
var gameInstance = UnityLoader.instantiate("gameContainer", "Build/1.0.json");
</script>
Run Code Online (Sandbox Code Playgroud)
并使用该脚本
<div class="gameContainer">
<div id="gameContainer" style="width: 960px; height: 600px; margin: auto"/>
</div>
Run Code Online (Sandbox Code Playgroud)
在普通的HTML代码中.
现在我意识到,当我在该页面上放置更多内容时,一切都会冻结,直到游戏加载完毕.什么是适当的解决方案?有一个简单的方法,如何使这个游戏加载异步?
非常感谢任何答案!
我已经开发了具有光子网络(PUN)的多人unity3d射击游戏。它运行良好,可以在Windows(exe)上运行,但是在浏览器(web gl)中不起作用。
没有光子的测试项目在浏览器中可以正常工作。我认为问题与光子有关。js控制台中有几个例外。
构建托管于
谷歌驱动器。 您能解释这个问题的原因吗?
Unity3d 5.3.1。Photon Unity Networking v1.65。使用chrome,firefox和Internet Explorer对构建进行了测试。Windows 7 x64。
我正在开发一个使用 Unity 集成到网站的增强现实应用程序。我需要在 WebGL 中获取输出。我正在使用 Vuforia 来创建 AR 体验。由于 WebGL 不支持 Vuforia,因此我无法构建。请建议一种替代方法或如何在 Unity for Web 中进行增强现实。有没有 Vuforia 的替代品?
不确定我在 Unity 中构建 WebGl 时做错了什么,或者是否需要添加更多内容。
在我们的 web 应用程序的 wwwroot 中设置一个路径以放入 WebGL 构建。当我在本地运行它时,页面将加载,并且出现 Unity 徽标,进度条达到 90% 就这样了。
在 Firefox 中运行时,页面加载并生成 RangeError 弹出窗口 如何查看传递的参数?
最初我出现了解析错误,但设法解决了该问题。
无法解析/MyApp/Build/Builds.framework.js.gz!如果启用了构建压缩,但托管内容的 Web 服务器配置错误,无法提供存在 HTTP 响应标头“Content-Encoding: gzip”的文件,则可能会发生这种情况。检查浏览器控制台和 Devtools Network 选项卡进行调试。
添加以下代码已解决解析错误。
public static IApplicationBuilder UseStaticFilesExtendedTypes(this IApplicationBuilder app)
{
var provider = new FileExtensionContentTypeProvider();
provider.Mappings[".glb"] = "model/gltf-binary";
provider.Mappings[".env"] = "application/octet-stream";
// app.UseStaticFiles(new StaticFileOptions { ContentTypeProvider = provider });
app.UseStaticFiles(new StaticFileOptions
{
ContentTypeProvider = provider,
OnPrepareResponse = content =>
{
if (content.File.Name.EndsWith(".js.gz"))
{
content.Context.Response.Headers["Content-Type"] = "text/javascript";
content.Context.Response.Headers["Content-Encoding"] = "gzip";
} …Run Code Online (Sandbox Code Playgroud) 我想使用 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];
},
});
Run Code Online (Sandbox Code Playgroud)
C#
[DllImport("__Internal")]
public static extern string GetUrl();
void Start () {
TextShow.text = GetUrl();
}
Run Code Online (Sandbox Code Playgroud)
当从 jslib 运行警报时,我看到警报中显示正确的字符串,但 UGUI 文本什么也没显示。
为什么会发生这种情况?
我的 Unity WebGL 游戏在大量优化音频和纹理数据后在移动 Web 浏览器上运行。保存游戏数据在桌面环境下运行良好。但是当我在移动浏览器上玩同一个游戏时,似乎没有任何地方保存游戏数据。下面给出了我在本地保存和加载数据的代码。
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.Serialization.Formatters.Binary;
using UnityEngine;
public class DataAccess
{
[DllImport ( "__Internal" )]
private static extern void SyncFiles ( );
[DllImport ( "__Internal" )]
private static extern void WindowAlert ( string message );
public static void Save ( Stats stats )
{
string dataPath = string.Format ( "{0}/Stats.dat", Application.persistentDataPath );
BinaryFormatter binaryFormatter = new BinaryFormatter ( );
FileStream fileStream;
try
{
if ( File.Exists ( dataPath ) )
{ …Run Code Online (Sandbox Code Playgroud) unity-webgl ×10
javascript ×3
html ×2
angular ×1
asynchronous ×1
c# ×1
get ×1
http ×1
photon ×1
save ×1
typescript ×1
unity5 ×1
vuforia ×1
web ×1
webgl ×1