From dce258ef915aba7c0b4ccf1ef0f4e28114c6fa65 Mon Sep 17 00:00:00 2001 From: dgflash Date: Thu, 14 Apr 2022 19:14:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B8=B8=E6=88=8F=E7=89=B9?= =?UTF-8?q?=E6=95=88=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/geometry/DrawSectorMesh.ts.meta | 11 --- .../component => game}/GameComponent.ts | 10 ++- .../component => game}/GameComponent.ts.meta | 2 +- .../core/game/camera/FreeFlightCamera.ts | 76 ++++++++--------- .../{common/component => game}/effect.meta | 2 +- .../component.meta => game/effect/2d.meta} | 2 +- .../effect => game/effect/2d}/Ambilight.ts | 0 .../effect/2d}/Ambilight.ts.meta | 2 +- .../effect => game/effect/2d}/FlashSpine.ts | 0 .../effect/2d}/FlashSpine.ts.meta | 6 +- .../effect => game/effect/2d}/FlashSprite.ts | 0 .../effect/2d}/FlashSprite.ts.meta | 6 +- .../game/effect/2d/SpineFinishedRelease.ts | 54 ++++++++++++ .../effect/2d/SpineFinishedRelease.ts.meta | 9 ++ assets/script/core/game/effect/3d.meta | 12 +++ .../core/game/effect/3d/NavLine.ts.meta | 9 ++ .../effect/3d}/geometry.meta | 2 +- .../effect/3d/geometry/DrawMeshRing.ts.meta | 9 ++ .../effect/3d/geometry/DrawMeshSector.ts} | 12 ++- .../effect/3d/geometry/DrawMeshSector.ts.meta | 9 ++ .../core/game/effect/EffectDelayRelease.ts | 29 +++++++ .../game/effect/EffectDelayRelease.ts.meta | 9 ++ .../core/game/effect/EffectFinishedRelease.ts | 30 +++++++ .../game/effect/EffectFinishedRelease.ts.meta | 9 ++ .../core/game/effect/EffectSingleCase.ts | 83 +++++++++++++++++++ .../core/game/effect/EffectSingleCase.ts.meta | 9 ++ .../script/core/gui/layer/NotifyComponent.ts | 11 ++- 27 files changed, 342 insertions(+), 71 deletions(-) delete mode 100644 assets/script/core/common/component/geometry/DrawSectorMesh.ts.meta rename assets/script/core/{common/component => game}/GameComponent.ts (89%) rename assets/script/core/{common/component => game}/GameComponent.ts.meta (70%) rename assets/script/core/{common/component => game}/effect.meta (77%) rename assets/script/core/{common/component.meta => game/effect/2d.meta} (77%) rename assets/script/core/{common/component/effect => game/effect/2d}/Ambilight.ts (100%) rename assets/script/core/{common/component/effect => game/effect/2d}/Ambilight.ts.meta (70%) rename assets/script/core/{common/component/effect => game/effect/2d}/FlashSpine.ts (100%) rename assets/script/core/{common/component/effect => game/effect/2d}/FlashSpine.ts.meta (52%) rename assets/script/core/{common/component/effect => game/effect/2d}/FlashSprite.ts (100%) rename assets/script/core/{common/component/effect => game/effect/2d}/FlashSprite.ts.meta (52%) create mode 100644 assets/script/core/game/effect/2d/SpineFinishedRelease.ts create mode 100644 assets/script/core/game/effect/2d/SpineFinishedRelease.ts.meta create mode 100644 assets/script/core/game/effect/3d.meta create mode 100644 assets/script/core/game/effect/3d/NavLine.ts.meta rename assets/script/core/{common/component => game/effect/3d}/geometry.meta (77%) create mode 100644 assets/script/core/game/effect/3d/geometry/DrawMeshRing.ts.meta rename assets/script/core/{common/component/geometry/DrawSectorMesh.ts => game/effect/3d/geometry/DrawMeshSector.ts} (93%) create mode 100644 assets/script/core/game/effect/3d/geometry/DrawMeshSector.ts.meta create mode 100644 assets/script/core/game/effect/EffectDelayRelease.ts create mode 100644 assets/script/core/game/effect/EffectDelayRelease.ts.meta create mode 100644 assets/script/core/game/effect/EffectFinishedRelease.ts create mode 100644 assets/script/core/game/effect/EffectFinishedRelease.ts.meta create mode 100644 assets/script/core/game/effect/EffectSingleCase.ts create mode 100644 assets/script/core/game/effect/EffectSingleCase.ts.meta diff --git a/assets/script/core/common/component/geometry/DrawSectorMesh.ts.meta b/assets/script/core/common/component/geometry/DrawSectorMesh.ts.meta deleted file mode 100644 index 3b0dff9..0000000 --- a/assets/script/core/common/component/geometry/DrawSectorMesh.ts.meta +++ /dev/null @@ -1,11 +0,0 @@ -{ - "ver": "4.0.23", - "importer": "typescript", - "imported": true, - "uuid": "16f74800-b991-41f0-9345-1e8ef3d4c7b1", - "files": [], - "subMetas": {}, - "userData": { - "simulateGlobals": [] - } -} diff --git a/assets/script/core/common/component/GameComponent.ts b/assets/script/core/game/GameComponent.ts similarity index 89% rename from assets/script/core/common/component/GameComponent.ts rename to assets/script/core/game/GameComponent.ts index c23a994..72ee1fa 100644 --- a/assets/script/core/common/component/GameComponent.ts +++ b/assets/script/core/game/GameComponent.ts @@ -1,5 +1,11 @@ +/* + * @Author: dgflash + * @Date: 2022-04-14 17:08:01 + * @LastEditors: dgflash + * @LastEditTime: 2022-04-14 19:07:39 + */ import { Component, _decorator } from "cc"; -import { EventDispatcher } from "../event/EventDispatcher"; +import { EventDispatcher } from "../common/event/EventDispatcher"; const { ccclass } = _decorator; @@ -79,4 +85,4 @@ export class GameComponent extends Component { this._eventDispatcher = null; } } -} +} \ No newline at end of file diff --git a/assets/script/core/common/component/GameComponent.ts.meta b/assets/script/core/game/GameComponent.ts.meta similarity index 70% rename from assets/script/core/common/component/GameComponent.ts.meta rename to assets/script/core/game/GameComponent.ts.meta index 1b80c09..22b5ec6 100644 --- a/assets/script/core/common/component/GameComponent.ts.meta +++ b/assets/script/core/game/GameComponent.ts.meta @@ -2,7 +2,7 @@ "ver": "4.0.23", "importer": "typescript", "imported": true, - "uuid": "ac536f92-9564-4e5d-bcf0-cc66fb91e8aa", + "uuid": "9e3f843c-2206-43f5-9b19-27b3ab93159d", "files": [], "subMetas": {}, "userData": {} diff --git a/assets/script/core/game/camera/FreeFlightCamera.ts b/assets/script/core/game/camera/FreeFlightCamera.ts index 4145398..73c93a3 100644 --- a/assets/script/core/game/camera/FreeFlightCamera.ts +++ b/assets/script/core/game/camera/FreeFlightCamera.ts @@ -9,7 +9,7 @@ * 6、只支持PC上使用 */ -import { CCFloat, Component, EventTouch, game, KeyCode, macro, math, systemEvent, SystemEvent, _decorator } from 'cc'; +import { CCFloat, Component, EventKeyboard, EventMouse, EventTouch, game, Input, input, KeyCode, math, _decorator } from 'cc'; const { ccclass, property, menu } = _decorator; const { Vec2, Vec3, Quat } = math; @@ -25,11 +25,11 @@ const KEYCODE = { D: 'D'.charCodeAt(0), Q: 'Q'.charCodeAt(0), E: 'E'.charCodeAt(0), - SHIFT: KeyCode.SHIFT_LEFT, + SHIFT: KeyCode.SHIFT_LEFT }; @ccclass("FreeFlightCamera") -@menu('game/camera/FreeFlightCamera') +@menu('oops/camera/FreeFlightCamera') export class FreeFlightCamera extends Component { @property({ type: CCFloat, @@ -63,27 +63,27 @@ export class FreeFlightCamera extends Component { public _speedScale = 1; public onLoad() { - systemEvent.on(SystemEvent.EventType.MOUSE_WHEEL, this.onMouseWheel, this); - systemEvent.on(SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this); - systemEvent.on(SystemEvent.EventType.KEY_UP, this.onKeyUp, this); - systemEvent.on(SystemEvent.EventType.TOUCH_START, this.onTouchStart, this); - systemEvent.on(SystemEvent.EventType.TOUCH_MOVE, this.onTouchMove, this); - systemEvent.on(SystemEvent.EventType.TOUCH_END, this.onTouchEnd, this); + input.on(Input.EventType.MOUSE_WHEEL, this.onMouseWheel, this); + input.on(Input.EventType.KEY_DOWN, this.onKeyDown, this); + input.on(Input.EventType.KEY_UP, this.onKeyUp, this); + input.on(Input.EventType.TOUCH_START, this.onTouchStart, this); + input.on(Input.EventType.TOUCH_MOVE, this.onTouchMove, this); + input.on(Input.EventType.TOUCH_END, this.onTouchEnd, this); Vec3.copy(this._euler, this.node.eulerAngles); Vec3.copy(this._position, this.node.position); } public onDestroy() { - systemEvent.off(SystemEvent.EventType.MOUSE_WHEEL, this.onMouseWheel, this); - systemEvent.off(SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this); - systemEvent.off(SystemEvent.EventType.KEY_UP, this.onKeyUp, this); - systemEvent.off(SystemEvent.EventType.TOUCH_START, this.onTouchStart, this); - systemEvent.off(SystemEvent.EventType.TOUCH_MOVE, this.onTouchMove, this); - systemEvent.off(SystemEvent.EventType.TOUCH_END, this.onTouchEnd, this); + input.off(Input.EventType.MOUSE_WHEEL, this.onMouseWheel, this); + input.off(Input.EventType.KEY_DOWN, this.onKeyDown, this); + input.off(Input.EventType.KEY_UP, this.onKeyUp, this); + input.off(Input.EventType.TOUCH_START, this.onTouchStart, this); + input.off(Input.EventType.TOUCH_MOVE, this.onTouchMove, this); + input.off(Input.EventType.TOUCH_END, this.onTouchEnd, this); } - public update(dt) { + public update(dt: number) { // position Vec3.transformQuat(v3_1, this._velocity, this.node.rotation); Vec3.scaleAndAdd(this._position, this._position, v3_1, this.moveSpeed * this._speedScale); @@ -96,41 +96,41 @@ export class FreeFlightCamera extends Component { this.node.setRotation(qt_1); } - public onMouseWheel(e) { - const delta = -e.getScrollY() * this.moveSpeed * 0.1; // 向下滚动时增量为正 + public onMouseWheel(event: EventMouse) { + const delta = -event.getScrollY() * this.moveSpeed * 0.1; // 向下滚动时增量为正 Vec3.transformQuat(v3_1, Vec3.UNIT_Z, this.node.rotation); Vec3.scaleAndAdd(this._position, this.node.position, v3_1, delta); } - public onKeyDown(e) { + public onKeyDown(event: EventKeyboard) { const v = this._velocity; - if (e.keyCode === KEYCODE.SHIFT) { this._speedScale = this.moveSpeedShiftScale; } - else if (e.keyCode === KEYCODE.W) { if (v.z === 0) { v.z = -1; } } - else if (e.keyCode === KEYCODE.S) { if (v.z === 0) { v.z = 1; } } - else if (e.keyCode === KEYCODE.A) { if (v.x === 0) { v.x = -1; } } - else if (e.keyCode === KEYCODE.D) { if (v.x === 0) { v.x = 1; } } - else if (e.keyCode === KEYCODE.Q) { if (v.y === 0) { v.y = -1; } } - else if (e.keyCode === KEYCODE.E) { if (v.y === 0) { v.y = 1; } } + if (event.keyCode === KEYCODE.SHIFT) { this._speedScale = this.moveSpeedShiftScale; } + else if (event.keyCode === KEYCODE.W) { if (v.z === 0) { v.z = -1; } } + else if (event.keyCode === KEYCODE.S) { if (v.z === 0) { v.z = 1; } } + else if (event.keyCode === KEYCODE.A) { if (v.x === 0) { v.x = -1; } } + else if (event.keyCode === KEYCODE.D) { if (v.x === 0) { v.x = 1; } } + else if (event.keyCode === KEYCODE.Q) { if (v.y === 0) { v.y = -1; } } + else if (event.keyCode === KEYCODE.E) { if (v.y === 0) { v.y = 1; } } } - public onKeyUp(e) { + public onKeyUp(event: EventKeyboard) { const v = this._velocity; - if (e.keyCode === KEYCODE.SHIFT) { this._speedScale = 1; } - else if (e.keyCode === KEYCODE.W) { if (v.z < 0) { v.z = 0; } } - else if (e.keyCode === KEYCODE.S) { if (v.z > 0) { v.z = 0; } } - else if (e.keyCode === KEYCODE.A) { if (v.x < 0) { v.x = 0; } } - else if (e.keyCode === KEYCODE.D) { if (v.x > 0) { v.x = 0; } } - else if (e.keyCode === KEYCODE.Q) { if (v.y < 0) { v.y = 0; } } - else if (e.keyCode === KEYCODE.E) { if (v.y > 0) { v.y = 0; } } + if (event.keyCode === KEYCODE.SHIFT) { this._speedScale = 1; } + else if (event.keyCode === KEYCODE.W) { if (v.z < 0) { v.z = 0; } } + else if (event.keyCode === KEYCODE.S) { if (v.z > 0) { v.z = 0; } } + else if (event.keyCode === KEYCODE.A) { if (v.x < 0) { v.x = 0; } } + else if (event.keyCode === KEYCODE.D) { if (v.x > 0) { v.x = 0; } } + else if (event.keyCode === KEYCODE.Q) { if (v.y < 0) { v.y = 0; } } + else if (event.keyCode === KEYCODE.E) { if (v.y > 0) { v.y = 0; } } } private onTouchStart(e: EventTouch) { - if (game.canvas.requestPointerLock) { game.canvas.requestPointerLock(); } + game.canvas!.requestPointerLock(); } private onTouchMove(e: EventTouch) { e.getStartLocation(v2_1); - if (v2_1.x > game.canvas.width * 0.4) { // rotation + if (v2_1.x > game.canvas!.width * 0.4) { // rotation e.getDelta(v2_2); this._euler.y -= v2_2.x * this.rotateSpeed * 0.1; // 上下旋转 this._euler.x += v2_2.y * this.rotateSpeed * 0.1; // 左右旋转 @@ -149,9 +149,9 @@ export class FreeFlightCamera extends Component { } e.getStartLocation(v2_1); - if (v2_1.x < game.canvas.width * 0.4) { // position + if (v2_1.x < game.canvas!.width * 0.4) { // position this._velocity.x = 0; this._velocity.z = 0; } } -} +} \ No newline at end of file diff --git a/assets/script/core/common/component/effect.meta b/assets/script/core/game/effect.meta similarity index 77% rename from assets/script/core/common/component/effect.meta rename to assets/script/core/game/effect.meta index fabeb60..1a334e3 100644 --- a/assets/script/core/common/component/effect.meta +++ b/assets/script/core/game/effect.meta @@ -2,7 +2,7 @@ "ver": "1.1.0", "importer": "directory", "imported": true, - "uuid": "811237dc-e1bd-43e9-8289-793efadcea2c", + "uuid": "686a8dbc-4c23-4370-a0df-420b6cc7bf38", "files": [], "subMetas": {}, "userData": { diff --git a/assets/script/core/common/component.meta b/assets/script/core/game/effect/2d.meta similarity index 77% rename from assets/script/core/common/component.meta rename to assets/script/core/game/effect/2d.meta index fd55264..f9b0a00 100644 --- a/assets/script/core/common/component.meta +++ b/assets/script/core/game/effect/2d.meta @@ -2,7 +2,7 @@ "ver": "1.1.0", "importer": "directory", "imported": true, - "uuid": "cc263b2f-8b27-4e4e-bad4-3860c593e0b3", + "uuid": "0ac8e8a4-4b4d-40f4-a03d-bd8ff1975fbd", "files": [], "subMetas": {}, "userData": { diff --git a/assets/script/core/common/component/effect/Ambilight.ts b/assets/script/core/game/effect/2d/Ambilight.ts similarity index 100% rename from assets/script/core/common/component/effect/Ambilight.ts rename to assets/script/core/game/effect/2d/Ambilight.ts diff --git a/assets/script/core/common/component/effect/Ambilight.ts.meta b/assets/script/core/game/effect/2d/Ambilight.ts.meta similarity index 70% rename from assets/script/core/common/component/effect/Ambilight.ts.meta rename to assets/script/core/game/effect/2d/Ambilight.ts.meta index f09bc7d..60359cf 100644 --- a/assets/script/core/common/component/effect/Ambilight.ts.meta +++ b/assets/script/core/game/effect/2d/Ambilight.ts.meta @@ -2,7 +2,7 @@ "ver": "4.0.23", "importer": "typescript", "imported": true, - "uuid": "9a795af4-dca5-4f2c-a806-1512a89a7705", + "uuid": "a9730721-9420-4d2f-b869-f0b053e57b91", "files": [], "subMetas": {}, "userData": {} diff --git a/assets/script/core/common/component/effect/FlashSpine.ts b/assets/script/core/game/effect/2d/FlashSpine.ts similarity index 100% rename from assets/script/core/common/component/effect/FlashSpine.ts rename to assets/script/core/game/effect/2d/FlashSpine.ts diff --git a/assets/script/core/common/component/effect/FlashSpine.ts.meta b/assets/script/core/game/effect/2d/FlashSpine.ts.meta similarity index 52% rename from assets/script/core/common/component/effect/FlashSpine.ts.meta rename to assets/script/core/game/effect/2d/FlashSpine.ts.meta index de8196c..a88903f 100644 --- a/assets/script/core/common/component/effect/FlashSpine.ts.meta +++ b/assets/script/core/game/effect/2d/FlashSpine.ts.meta @@ -2,10 +2,8 @@ "ver": "4.0.23", "importer": "typescript", "imported": true, - "uuid": "539c144b-519d-477d-84a0-4551eeacbfd9", + "uuid": "636cfc58-d237-4467-bf4c-700fa4962be6", "files": [], "subMetas": {}, - "userData": { - "simulateGlobals": [] - } + "userData": {} } diff --git a/assets/script/core/common/component/effect/FlashSprite.ts b/assets/script/core/game/effect/2d/FlashSprite.ts similarity index 100% rename from assets/script/core/common/component/effect/FlashSprite.ts rename to assets/script/core/game/effect/2d/FlashSprite.ts diff --git a/assets/script/core/common/component/effect/FlashSprite.ts.meta b/assets/script/core/game/effect/2d/FlashSprite.ts.meta similarity index 52% rename from assets/script/core/common/component/effect/FlashSprite.ts.meta rename to assets/script/core/game/effect/2d/FlashSprite.ts.meta index 19d7d8a..631c13f 100644 --- a/assets/script/core/common/component/effect/FlashSprite.ts.meta +++ b/assets/script/core/game/effect/2d/FlashSprite.ts.meta @@ -2,10 +2,8 @@ "ver": "4.0.23", "importer": "typescript", "imported": true, - "uuid": "dce50f6b-61e2-42d0-8729-b8c9dd8f9e8e", + "uuid": "186cb183-5126-4e4c-9c3e-59f7039f522c", "files": [], "subMetas": {}, - "userData": { - "simulateGlobals": [] - } + "userData": {} } diff --git a/assets/script/core/game/effect/2d/SpineFinishedRelease.ts b/assets/script/core/game/effect/2d/SpineFinishedRelease.ts new file mode 100644 index 0000000..e43367d --- /dev/null +++ b/assets/script/core/game/effect/2d/SpineFinishedRelease.ts @@ -0,0 +1,54 @@ +/* + * @Author: dgflash + * @Date: 2021-10-12 14:11:04 + * @LastEditors: dgflash + * @LastEditTime: 2022-04-08 15:42:16 + */ + +import { Component, sp, _decorator } from 'cc'; +import { resLoader } from '../../../common/loader/ResLoader'; +const { ccclass, property } = _decorator; + +/** 动画播放完隐藏特效 */ +@ccclass('SpineFinishedRelease') +export class SpineFinishedRelease extends Component { + @property + isDestroy: boolean = true; + + private spine!: sp.Skeleton; + private resPath: string = null!; + + /** 设置路径 */ + setResPath(path: string) { + this.resPath = path; + } + + onLoad() { + this.spine = this.getComponent(sp.Skeleton)!; + this.spine.setCompleteListener(this.onSpineComplete.bind(this)); + + if (this.resPath) { + resLoader.load(this.resPath, sp.SkeletonData, (err: Error | null, sd: sp.SkeletonData) => { + if (err) { + console.error(`加载【${this.resPath}】的 SPINE 资源不存在`); + return; + } + + this.spine.skeletonData = sd; + this.spine.setAnimation(0, "animation", false); + }); + } + else { + this.spine.setAnimation(0, "animation", false); + } + } + + private onSpineComplete() { + if (this.isDestroy) { + this.node.destroy(); + } + else { + this.node.removeFromParent(); + } + } +} diff --git a/assets/script/core/game/effect/2d/SpineFinishedRelease.ts.meta b/assets/script/core/game/effect/2d/SpineFinishedRelease.ts.meta new file mode 100644 index 0000000..3316e21 --- /dev/null +++ b/assets/script/core/game/effect/2d/SpineFinishedRelease.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "64c1985f-3821-4347-b64f-f591eb63af6e", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/script/core/game/effect/3d.meta b/assets/script/core/game/effect/3d.meta new file mode 100644 index 0000000..0bdf1a6 --- /dev/null +++ b/assets/script/core/game/effect/3d.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "54a3c2f0-f61b-4364-8793-152253b88559", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/assets/script/core/game/effect/3d/NavLine.ts.meta b/assets/script/core/game/effect/3d/NavLine.ts.meta new file mode 100644 index 0000000..3ab45a0 --- /dev/null +++ b/assets/script/core/game/effect/3d/NavLine.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "41dced17-0943-4823-be09-d3349e68351f", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/script/core/common/component/geometry.meta b/assets/script/core/game/effect/3d/geometry.meta similarity index 77% rename from assets/script/core/common/component/geometry.meta rename to assets/script/core/game/effect/3d/geometry.meta index ec2cd31..d507e69 100644 --- a/assets/script/core/common/component/geometry.meta +++ b/assets/script/core/game/effect/3d/geometry.meta @@ -2,7 +2,7 @@ "ver": "1.1.0", "importer": "directory", "imported": true, - "uuid": "fd6e96ff-96ce-44f0-8eda-24aaf8c2e936", + "uuid": "6295772d-e72e-4ed2-bb3b-5aa3c1132f3a", "files": [], "subMetas": {}, "userData": { diff --git a/assets/script/core/game/effect/3d/geometry/DrawMeshRing.ts.meta b/assets/script/core/game/effect/3d/geometry/DrawMeshRing.ts.meta new file mode 100644 index 0000000..24a6e88 --- /dev/null +++ b/assets/script/core/game/effect/3d/geometry/DrawMeshRing.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "dd1877ff-a74c-498e-9b20-9cea493beb55", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/script/core/common/component/geometry/DrawSectorMesh.ts b/assets/script/core/game/effect/3d/geometry/DrawMeshSector.ts similarity index 93% rename from assets/script/core/common/component/geometry/DrawSectorMesh.ts rename to assets/script/core/game/effect/3d/geometry/DrawMeshSector.ts index c615f4f..93858d8 100644 --- a/assets/script/core/common/component/geometry/DrawSectorMesh.ts +++ b/assets/script/core/game/effect/3d/geometry/DrawMeshSector.ts @@ -1,12 +1,16 @@ +/* + * @Author: dgflash + * @Date: 2022-02-10 09:50:41 + * @LastEditors: dgflash + * @LastEditTime: 2022-04-08 17:22:27 + */ import { Component, gfx, macro, Material, MeshRenderer, utils, Vec3, _decorator } from 'cc'; const { ccclass, property } = _decorator; +/** 绘制扇形网格 */ @ccclass('DrawSectorMesh') -/** - * 绘制扇形网格 - */ -export class DrawSectorMesh extends Component { +export class DrawMeshSector extends Component { @property({ type: Material }) public mat: Material | null = null; diff --git a/assets/script/core/game/effect/3d/geometry/DrawMeshSector.ts.meta b/assets/script/core/game/effect/3d/geometry/DrawMeshSector.ts.meta new file mode 100644 index 0000000..1d8459c --- /dev/null +++ b/assets/script/core/game/effect/3d/geometry/DrawMeshSector.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "69692e04-9c37-40ed-829a-f5561307eff2", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/script/core/game/effect/EffectDelayRelease.ts b/assets/script/core/game/effect/EffectDelayRelease.ts new file mode 100644 index 0000000..c08ef64 --- /dev/null +++ b/assets/script/core/game/effect/EffectDelayRelease.ts @@ -0,0 +1,29 @@ +/* + * @Author: dgflash + * @Date: 2021-08-11 16:41:12 + * @LastEditors: dgflash + * @LastEditTime: 2022-04-07 17:25:04 + */ + +import { Component, _decorator } from 'cc'; +import { EffectSingleCase } from './EffectSingleCase'; +const { ccclass, property } = _decorator; + +/** + * 延时释放特效 + * 注:场景中频繁有特效添加和释放时,可考虑使用对象池优化创建对象的性能开销 + */ +@ccclass('EffectDelayRelease') +export class EffectDelayRelease extends Component { + /** 延时释放时间(单位秒) */ + @property + public delay: number = 1; + + start() { + this.scheduleOnce(this.onDelay, this.delay); + } + + private onDelay() { + EffectSingleCase.instance.put(this.node); + } +} diff --git a/assets/script/core/game/effect/EffectDelayRelease.ts.meta b/assets/script/core/game/effect/EffectDelayRelease.ts.meta new file mode 100644 index 0000000..9c15cde --- /dev/null +++ b/assets/script/core/game/effect/EffectDelayRelease.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "ecbbfcee-05da-40a9-8e09-a2975452d147", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/script/core/game/effect/EffectFinishedRelease.ts b/assets/script/core/game/effect/EffectFinishedRelease.ts new file mode 100644 index 0000000..1268aba --- /dev/null +++ b/assets/script/core/game/effect/EffectFinishedRelease.ts @@ -0,0 +1,30 @@ +/* + * @Author: dgflash + * @Date: 2021-12-30 19:16:47 + * @LastEditors: dgflash + * @LastEditTime: 2022-04-07 17:08:44 + */ + +import { Animation, Component, _decorator } from 'cc'; +import { EffectSingleCase } from './EffectSingleCase'; +const { ccclass, property } = _decorator; + +@ccclass('EffectFinishedRelease') +/** 动画播放完释放特效 */ +export class EffectFinishedRelease extends Component { + @property({ type: Animation, tooltip: '资源对象池类型名' }) + anim: Animation = null!; + + onLoad() { + this.anim.on(Animation.EventType.FINISHED, this.onFinished, this); + this.anim.on(Animation.EventType.LASTFRAME, this.onFinished, this); + } + + start() { + this.anim.play(); + } + + private onFinished() { + EffectSingleCase.instance.put(this.node); + } +} diff --git a/assets/script/core/game/effect/EffectFinishedRelease.ts.meta b/assets/script/core/game/effect/EffectFinishedRelease.ts.meta new file mode 100644 index 0000000..757a1ad --- /dev/null +++ b/assets/script/core/game/effect/EffectFinishedRelease.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "39094659-91ac-44a2-9237-f917fd069ca4", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/script/core/game/effect/EffectSingleCase.ts b/assets/script/core/game/effect/EffectSingleCase.ts new file mode 100644 index 0000000..91f12ca --- /dev/null +++ b/assets/script/core/game/effect/EffectSingleCase.ts @@ -0,0 +1,83 @@ +/* + * @Author: dgflash + * @Date: 2021-10-12 14:00:43 + * @LastEditors: dgflash + * @LastEditTime: 2022-04-14 19:06:51 + */ + +import { Component, Node, NodePool, Vec3 } from 'cc'; +import { ViewUtil } from '../../utils/ViewUtil'; + +class EffectData extends Component { + type: string = null!; +} + +/** 全局单例特效 */ +export class EffectSingleCase { + private static _instance: EffectSingleCase; + public static get instance(): EffectSingleCase { + if (this._instance == null) { + this._instance = new EffectSingleCase(); + } + return this._instance; + } + + private effects: Map = new Map(); + + /** + * 显示预制对象 + * @param name 预制对象名称 + * @param parent 父节点 + * @param pos 位置 + */ + show(name: string, parent: Node, pos?: Vec3): Node { + var np = this.effects.get(name); + if (np == null) { + np = new NodePool(); + this.effects.set(name, np); + } + + var node: Node; + if (np.size() == 0) { + node = ViewUtil.createPrefabNode(name); + node.addComponent(EffectData).type = name; + } + else { + node = np.get()!; + } + node.parent = parent; + if (pos) node.position = pos; + + return node; + } + + /** + * 回收对象 + * @param name 预制对象名称 + * @param node 节点 + */ + put(node: Node) { + var name = node.getComponent(EffectData)!.type; + var np = this.effects.get(name); + if (np) { + np.put(node); + } + } + + /** + * 清除对象池数据 + * @param name 参数为空时,清除所有对象池数据;指定名时,清楚指定数据 + */ + clear(name?: string) { + if (name) { + var np = this.effects.get(name)!; + np.clear(); + } + else { + this.effects.forEach(np => { + np.clear(); + }); + this.effects.clear(); + } + } +} \ No newline at end of file diff --git a/assets/script/core/game/effect/EffectSingleCase.ts.meta b/assets/script/core/game/effect/EffectSingleCase.ts.meta new file mode 100644 index 0000000..9900da6 --- /dev/null +++ b/assets/script/core/game/effect/EffectSingleCase.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "b6288c35-d337-4566-8bf7-3f0b60980c1f", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/script/core/gui/layer/NotifyComponent.ts b/assets/script/core/gui/layer/NotifyComponent.ts index 497b135..4f79ca9 100644 --- a/assets/script/core/gui/layer/NotifyComponent.ts +++ b/assets/script/core/gui/layer/NotifyComponent.ts @@ -1,11 +1,16 @@ -import { Animation, Label, _decorator } from "cc"; -import { GameComponent } from "../../common/component/GameComponent"; +/* + * @Author: dgflash + * @Date: 2022-04-14 17:08:01 + * @LastEditors: dgflash + * @LastEditTime: 2022-04-14 19:06:34 + */ +import { Animation, Component, Label, _decorator } from "cc"; import { LanguageLabel } from "../language/LanguageLabel"; const { ccclass, property } = _decorator; @ccclass('NotifyComponent') -export class NotifyComponent extends GameComponent { +export class NotifyComponent extends Component { @property(Label) private lab_content: Label | null = null;