首页 > 解决方案 > 无法将纹理设置为框(html5 / js / babylon.js)

问题描述

我正在尝试 Babylon.js。我想设置我的地板纹理,但它不起作用。我收到以下错误:

在此处输入图像描述

“未捕获的 TypeError:_this.getScene 不是函数”(用于谷歌搜索)

我真的不明白,youtube 教程让它看起来很容易。

源代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        #canvas {
            width: 100%;
            height: 100%;
        }
    </style>
</head>
<body>
    <canvas id="canvas"></canvas>
    <script src="https://cdn.babylonjs.com/babylon.max.js"></script>
    <script>
        window.addEventListener('DOMContentLoaded', function () {
            var canvas = document.getElementById('canvas');
            var engine = new BABYLON.Engine(canvas, true);
            var createScene = function () {
                var scene = new BABYLON.Scene(engine);
                scene.clearColor = new BABYLON.Color3.White();

                var floor = BABYLON.MeshBuilder.CreateBox("floor", { height: 25, width: 800, depth: 900 }, scene);
                floor.position.y = -162.5;
                floor.position.x = 100;
                floor.position.z = 400;

                var camera = new BABYLON.ArcRotateCamera(
                    'camera1',
                    BABYLON.Tools.ToRadians(45),
                    BABYLON.Tools.ToRadians(45),
                    1000.0,
                    new BABYLON.Vector3(0, 50, 400),
                    scene);
                camera.attachControl(canvas, true);

                var light = new BABYLON.PointLight("pointlight", new BABYLON.Vector3(800, 700, 1000), scene);
                light.diffuse = new BABYLON.Color3(1, 1, 1);


                var floormaterial = new BABYLON.StandardMaterial("floormaterial", scene);
                floormaterial.diffuseTexture = BABYLON.Texture("floor.png", scene);
                floor.material = floormaterial;

                return scene;
            };

            var scene = createScene();
            engine.runRenderLoop(function () {
                scene.render();
            });

        });
    </script>
</body>
</html>

如果我删除“floormaterial.diffuseTexture = BABYLON.Texture("floor.png", scene);” 线一切正常。

标签: javascripthtmlbabylonjs

解决方案


您缺少new纹理之前的内容。该行应该是:

floormaterial.diffuseTexture = new BABYLON.Texture("floor.png", scene);

推荐阅读