Unity3d - 在Google App Engine上托管
我在把我的Unity3d网页应用放到GAE上时遇到了问题。
当应用加载并且网页播放器开始请求“.unity3d”文件时,我使用了下面的Python脚本来处理HTTP响应:
class UnityHandler(webapp.RequestHandler):
def get (self, q):
if q is None:
q = 'WebPlayer.unity3d'
path = os.path.join (os.path.dirname (__file__), q)
self.response.headers ['Content-Type'] = 'text/html'
self.response.out.write (template.render (path, {}))
def main ():
application = webapp.WSGIApplication (
[('/(.*html)?', MainHandler),
('/(.*unity3d)?', UnityHandler)
], debug=True)
util.run_wsgi_app (application)
但是效果不是很好,它能找到这个文件,但Unity网页播放器却给我提示“文件长度不正确”的错误。
所以,有谁能告诉我问题出在哪里吗?
我觉得这可能和设置“内容类型”有关,但我不知道该怎么解决。
谢谢,
Samer Samy
1 个回答
4
首先,我假设你是想把以 path =
开头的三行代码缩进。
其次,我猜你的目的是把网址 "/" 路由到 WebPlayer.unity3d。不过,你的两个正则表达式都会匹配到 /,因为斜杠后面的内容是可选的;所以请求会先被 MainHandler 接收到。
第三,看起来你是想通过动态处理程序和模板引擎同时提供静态文件。为什么呢?如果你只是想直接提供静态文件,可以使用 静态处理程序。
假设你把 .unity3d 文件放在一个叫 static 的文件夹里:
# render WebPlayer.unity3d on /
- url: /
static_files: static/WebPlayer.unity3d
upload: static/WebPlayer.unity3d
# match other .unity3d files
- url: /(.*\.unity3d)
static_files: static/\1
upload: static/(.*\.unity3d)
# match *.html and anything else
- url: .*
script: main.py