扩展cc.Node快捷访问cc内置组件属性

This commit is contained in:
donggang
2024-03-20 17:11:05 +08:00
parent 3ac0da736e
commit ded77f2a4e

View File

@@ -1,3 +1,4 @@
import { Graphics, Label, RichText, Sprite, Button, Canvas, EditBox, Layout, PageView, ProgressBar, ScrollView, Slider, Toggle, Skeleton, Widget, Mask, js, Vec2, Vec3 } from "cc";
import { Color, Node, Size, UIOpacity, UIRenderer, UITransform, v3 } from "cc";
import { EDITOR } from "cc/env";
@@ -6,6 +7,26 @@ import { EDITOR } from "cc/env";
/** 扩展节点属性 */
declare module "cc" {
interface Node {
graphics: Graphics,
label: Label,
richText: RichText,
sprite: Sprite,
button: Button,
canvas: Canvas,
editBox: EditBox,
layout: Layout,
pageView: PageView,
progressBar: ProgressBar,
scrollView: ScrollView,
slider: Slider,
toggle: Toggle,
animation: Animation,
skeleton: Skeleton,
widget: Widget,
uiOpacity: UIOpacity,
uiTransform: UITransform,
mask: Mask;
/** 获取、设置节点的本地X坐标 */
x: number;
/** 获取、设置节点的本地Y坐标 */
@@ -47,6 +68,37 @@ if (!EDITOR) {
//@ts-ignore
Node.prototype["$__definedProperties__"] = true;
let componentMap: any = {
"graphics": Graphics,
"label": Label,
"richText": RichText,
"sprite": Sprite,
"button": Button,
"canvas": Canvas,
"editBox": EditBox,
"layout": Layout,
"pageView": PageView,
"progressBar": ProgressBar,
"scrollView": ScrollView,
"slider": Slider,
"toggle": Toggle,
"animation": Animation,
"skeleton": Skeleton,
"widget": Widget,
"uiOpacity": UIOpacity,
"uiTransform": UITransform,
"mask": Mask,
};
for (const key in componentMap) {
Object.defineProperty(Node.prototype, key, {
get: function () {
return this.getComponent(componentMap[key]);
},
set: function (value) { }
});
}
/** 获取、设置节点的 X 欧拉角 */
Object.defineProperty(Node.prototype, "angle_x", {
get: function () {