Adds level prefabs, theme assets, audio, extensions, and deployment scripts for the Unity WebGL migration. Co-authored-by: Cursor <cursoragent@cursor.com>
83 lines
3.6 KiB
HTML
83 lines
3.6 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
|
||
<title>主站 · Cocos 关卡引擎</title>
|
||
<style>
|
||
* { box-sizing: border-box; }
|
||
html, body { margin: 0; height: 100%; background: #1a1a2e; font-family: system-ui, sans-serif; }
|
||
#layout { display: flex; flex-direction: column; height: 100%; }
|
||
#toolbar { padding: 8px 12px; background: #16213e; color: #eee; display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
|
||
#toolbar button { padding: 6px 12px; cursor: pointer; border: none; border-radius: 4px; background: #0f3460; color: #fff; }
|
||
#toolbar button:hover { background: #e94560; }
|
||
#game-wrap {
|
||
flex: 1; position: relative; min-height: 0;
|
||
display: flex; justify-content: center; align-items: center;
|
||
}
|
||
/* 与 Unity Web 模板一致:游戏区 960×600 */
|
||
#GameDiv { width: 960px; height: 600px; flex-shrink: 0; }
|
||
#GameDiv #Cocos3dGameContainer, #GameDiv #GameCanvas { width: 100% !important; height: 100% !important; }
|
||
#log { height: 120px; overflow: auto; background: #0d1117; color: #8b949e; font: 12px/1.4 monospace; padding: 8px; }
|
||
</style>
|
||
<!-- ① 先挂回调(与 Unity Template/index.html 一致) -->
|
||
<script src="cocos-bridge.js"></script>
|
||
</head>
|
||
<body>
|
||
<div id="layout">
|
||
<div id="toolbar">
|
||
<strong>主站 Cocos 联调</strong>
|
||
<button type="button" id="btn-l1">关卡 1</button>
|
||
<button type="button" id="btn-l21">关卡 21(载具)</button>
|
||
<button type="button" id="btn-move">前进 2 格</button>
|
||
<button type="button" id="btn-info">获取坐标</button>
|
||
<button type="button" id="btn-end">结束输入</button>
|
||
</div>
|
||
<div id="game-wrap">
|
||
<!-- ② Cocos 构建后替换为 build 目录中的容器,常见为 #GameDiv -->
|
||
<div id="GameDiv">
|
||
<div id="Cocos3dGameContainer">
|
||
<canvas id="GameCanvas" tabindex="0"></canvas>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<pre id="log"></pre>
|
||
</div>
|
||
|
||
<script>
|
||
const logEl = document.getElementById('log');
|
||
function log(msg) {
|
||
logEl.textContent += msg + '\n';
|
||
logEl.scrollTop = logEl.scrollHeight;
|
||
}
|
||
|
||
window.__tfrhOnExternalLevelInfo = (j) => log('关卡就绪: ' + j);
|
||
window.__tfrhOnProcessData = (j) => log('坐标: ' + j);
|
||
window.__tfrhOnExternalResult = (j) => log('结果: ' + j);
|
||
|
||
function send(obj, method, arg) {
|
||
const ins = window.unityInstance || window.cocosIns;
|
||
if (!ins) { log('实例未就绪'); return; }
|
||
if (arg === undefined) ins.SendMessage(obj, method);
|
||
else ins.SendMessage(obj, method, arg);
|
||
}
|
||
|
||
document.getElementById('btn-l1').onclick = () => send('GameController', 'SwitchLevel', 1);
|
||
document.getElementById('btn-l21').onclick = () => send('GameController', 'SwitchLevel', 21);
|
||
document.getElementById('btn-move').onclick = () => send('Player', 'CallMove', 2);
|
||
document.getElementById('btn-info').onclick = () => send('Player', 'CallPlayerInfo');
|
||
document.getElementById('btn-end').onclick = () => send('GameController', 'CallSetIsInputEnd', 1);
|
||
</script>
|
||
|
||
<!-- ③ 在 Cocos 构建输出的 index.html 中,将 systemjs / index.js 等脚本复制到本页 GameDiv 之后 -->
|
||
<!-- 示例(路径按实际构建目录修改):
|
||
<script src="src/polyfills.bundle.js"></script>
|
||
<script src="src/system.bundle.js"></script>
|
||
<script src="src/import-map.json" type="systemjs-importmap"></script>
|
||
<script>
|
||
System.import('./index.js').catch(function(e){ console.error(e); });
|
||
</script>
|
||
-->
|
||
</body>
|
||
</html>
|