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 108 forks source link

同一个组件只能添加一个Sound #35

Closed glink25 closed 3 years ago

glink25 commented 3 years ago

Expected Behavior

Current Behavior

Possible Solution

Steps to Reproduce

Environment

使用Sound时发现同一个组件似乎只能addComponent一次Sound,多次添加Sound只有第一次添加的会生效,后面的会返回undefined

const firstSound = someGameObject.addComponent(
  new Sound({
    resource: "firstSound",
  })
);// available
const secondSound = someGameObject.addComponent(
  new Sound({
    resource: "secondSound",
  })
);// undefined
fanmingfei commented 3 years ago

每个 GameObject 只能绑定一个组件,如果有此类需求其实可以扩展Sound的能力,类似把resource当作一个列表来使用。

其实现在是可以将多段声音放到一个声音文件中使用,通过调节播放位置来播放特定声音。

其实可以封装的更加完善一些,一个资源文件里面包含声音资源和一段JSON描述,JSON中存放声音名字和对应的时间阶段,这样只要调用要播放的声音名字就可以播放对应的声音了。

fanmingfei commented 3 years ago

44 创建了一个重构声音系统的action。