Unity3d - 在Google App Engine上托管

3 投票
1 回答
1275 浏览
提问于 2025-04-17 02:07

我在把我的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

撰写回答