Vehicle.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { Vec3, Node, MeshRenderer, RenderableComponent, Color } from "cc";
  2. import { ViewUtil } from "../../../../extensions/oops-plugin-framework/assets/core/utils/ViewUtil";
  3. import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
  4. import { VehicleModelComp } from "./model/VehicleModelComp";
  5. import { VehicleViewComp } from "./view/VehicleViewComp";
  6. import { VehicleSitSystem } from "./bll/VehicleCheck";
  7. /**
  8. * 关卡实体
  9. * 1、生成关卡初始话数据
  10. */
  11. @ecs.register('Vehicle')
  12. export class Vehicle extends ecs.Entity {
  13. VehicleModel!: VehicleModelComp;
  14. protected init() {
  15. // 添加关卡数据组件
  16. this.addComponents<ecs.Comp>(VehicleModelComp);
  17. }
  18. destroy(): void {
  19. // 如果该组件对象是由ecs系统外部创建的,则不可回收,需要用户自己手动进行回收。
  20. this.remove(VehicleViewComp);
  21. super.destroy();
  22. }
  23. /** 加载车辆显示对象(cc.Component在创建后,添加到ECS框架中,使实体上任何一个ECS组件都可以通过 ECS API 获取到视图层对象 */
  24. load(parent: Node,color:string,pos: Vec3 = Vec3.ZERO) {
  25. var node = ViewUtil.createPrefabNode("game/prefab/car");
  26. // 获取MeshRenderer组件
  27. let rendererComponet = node.getComponentInChildren(MeshRenderer) as RenderableComponent
  28. debugger
  29. if (rendererComponet) {
  30. // 获取材质实例
  31. let materialIns = rendererComponet.material
  32. if (materialIns) {
  33. // 修改材质实例的颜色
  34. let colorStr;
  35. switch (color.toLowerCase()) {
  36. case "red":
  37. colorStr = Color.RED;
  38. break;
  39. case "blue":
  40. colorStr = Color.BLUE;
  41. break;
  42. case "yellow":
  43. colorStr = Color.YELLOW;
  44. break;
  45. default:
  46. colorStr = Color.WHITE; // 默认颜色
  47. }
  48. materialIns.setProperty('mainColor', colorStr);
  49. rendererComponet.material = materialIns
  50. }
  51. }
  52. var mv = node.getComponent(VehicleViewComp)!;
  53. this.add(mv);
  54. node.parent = parent;
  55. node.setPosition(pos);
  56. }
  57. }
  58. export class EcsVehicleSystem extends ecs.System {
  59. constructor() {
  60. super();
  61. this.add(new VehicleSitSystem());
  62. }
  63. }