单击按钮加载特定场景

时间:2019-10-14 01:54:51

标签: reactjs unity3d create-react-app unity-webgl

下面是App.js中的当前代码

//export default App;
export default class App extends Component {
  constructor(props) {
    super(props);

    this.unityContent = new UnityContent(
      "unity_project_build/Build.json",
      "unity_project_build/UnityLoader.js"
    );

    this.SceneChange = this.SceneChange.bind(this);
  }

  // change scene and orientatation buttons
  SceneChange() {
    this.unityContent.send("GameManageer", "ChangeScene");
  }

  render() {
    return (
      <Router>
        <div>
          <h2>Welcome to React Router Tutorial</h2>
          <nav className="navbar navbar-expand-lg navbar-light bg-light">
            <ul className="navbar-nav mr-auto">
              <li>
                <Link to={"/"} className="nav-link">
                  {" "}
                  Home{" "}
                </Link>
              </li>
              <li>
                <Link to={"/Office"} className="nav-link">
                  Office
                </Link>
              </li>
              <li>
                <Link to={"/gym"} className="nav-link">
                  Gym
                </Link>
              </li>
            </ul>
          </nav>
          <hr />
          <Switch>
            <Route exact path="/" component={Home} />
            <Route path="/Office" component={Office} />
            <Route path="/gym" component={Gym} />
          </Switch>
        </div>
      </Router>
    );
  }
}

我想做的是,当我单击“健身房”时,我想加载功能SceneChange。

这是我尝试过的方法,我在App.js中编写了SceneChange函数,并使用onClick函数将其绑定。但是什么都没有改变

 <li>
   <Link to={"/gym"} onClick={this.SceneChange} className="nav-link">
    Gym
   </Link>
 </li>

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

最后解决它。

render() {
    return (
      // Finally render the Unity component and pass
      // the Unity content
      // through the props. And create
      // a button to handle the click event

      <div>
        <button onClick={this.onClickStart}>Start</button>
        <button onClick={this.onClickStop}>Stop</button>
        <button onClick={this.decrease}>-</button>
        <input
          type="number"
          min="1"
          max="200"
          value={this.state.value}
          onChange={this.onNumberChange}
        />
        <button onClick={this.increase}>+</button>
        <button onClick={this.reset}>Reset</button>
        <button onClick={this.changeView}>2D/3D</button>
        {this.SceneChange()}
        {/* <button onClick={this.SceneChange}>Change</button> */}
        <Unity unityContent={this.unityContent} />
      </div>
    );
  }
}

export default Gym;

在我的Gym.js中,我直接调用该函数。 {this.SceneChange()}并且有效。因此,我只是在此处发布解决方案,以便任何使用react unity webGL的人都有此解决方案