eva-engine / eva.js

Eva.js is a front-end game engine specifically for creating interactive game projects.
https://eva.js.org
MIT License
1.75k stars 107 forks source link

自定义组件怎么用,写的不详细 #14

Closed lishichao1002 closed 3 years ago

lishichao1002 commented 3 years ago

自定义组件里面是写的update等方法,但是如何和scene产生联系呢?

Scene.addChild() 不能添加 Component Scene.addComponent也不能添加Component

那么,自定义Componet是怎么挂着到整个Tree上面呢?

fanmingfei commented 3 years ago

CustomComponent Documentation CustomComponent Playground

class Move extends Component {
  //...
  init(params) {
    this.speed = params.speed || { x: 0, y: 0 }
  }
}

const go = new GameObject('name')
go.addComponent(new Move({
  speed: {
    x: 100,
    y: 100
  }
}))
fanmingfei commented 3 years ago

文档里面增加了 组件的安装使用方法

lishichao1002 commented 3 years ago

get

挂载组件树的精髓在这里

const bg = new GameObject("image", {
    size: {
      width: Full_Width,
      height: Full_Height,
    },
    origin: { x: 0, y: 0 },
  });
  bg.addComponent(
    new Img({
      resource: "bg1",
    })
  );
  // 挂载自定义组件
  bg.addComponent(new GameComponent());
export class GameComponent extends Component {

     init () {
         // 通过this.gameObject 挂载子节点,这个this.gameObject有点隐晦
         this.gameObject.addComponent(new Event());
     }

     update() {
       // update逻辑
     }
}