| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import { _decorator, Component, Node, Vec3, systemEvent, SystemEventType, macro, EventKeyboard, Enum } from 'cc';
- const { ccclass, property } = _decorator;
- export enum RenderDirection {
- x,
- y
- }
- export enum RenderSort {
- up,
- Down
- }
- /**
- * @description 深度排序,通过指定容器中的node节点Y值,自动更改node节点的渲染顺序(Y值小的遮挡Y值大的node对象)
- * @author 王锡铜、袁浩
- */
- @ccclass('RenderTree')
- export class RenderTree extends Component {
- @property({ type: Enum(RenderDirection), tooltip: "渲染方向" }) dir: RenderDirection = RenderDirection.y;
- @property({ type: Enum(RenderSort), tooltip: "渲染排序方式" }) sort: RenderSort = RenderSort.Down;
- update(deltaTime: number) {
- let tempArray = this.node.children.concat();
- let sortArray = [];
- if (this.dir == RenderDirection.y) {
- sortArray = tempArray.sort(function (a, b): number {
- if (a.position.y > b.position.y) {
- return -1;
- } else {
- return 1;
- }
- });
- } else {
- sortArray = tempArray.sort(function (a, b): number {
- if (a.position.x > b.position.x) {
- return -1;
- } else {
- return 1;
- }
- });
- }
- for (let i = 0; i < sortArray.length; i++) {
- sortArray[i].setSiblingIndex(this.sort == RenderSort.Down ? i : sortArray.length - i - 1);
- }
- }
- }
|