CCC 3.x的2d游戏开发常用方法有哪些?文档整理,不对的地方请指正

做个文档整理,大佬们可以把自己的常用方法贴一下,萌新来学习下,送人玫瑰,手有余香,多谢!

2赞

1.随机范围正整数
const min =1 ;
const max =7 ;

randomRange(min, max) { // min最小值,max最大值

    return Math.floor(Math.random() * (max - min)) + min;

}

2.查找其他节点

kidNode: Node;
this.kidNode = find(“Canvas/kid”);

3.定义常量和变量
const min =1 ;

4获取当前节点的坐标
this.kidNode.getPosition()
this.kidNode.getPosition().x
this.kidNode.getPosition().y

5.本地数据存储. ==关掉ccc就重新刷新数据 好像不太对

let graidNum = null;
graidNum = localStorage.getItem(graidNum)

  1. 获取鼠标点击事件及事件监听

this.node.on(Node.EventType.MOUSE_DOWN, (event) => {

        console.log("click btn");

        }, this);

https://docs.cocos.com/creator/manual/zh/engine/event/event-node.html?h=eventtarget%20

  1. 计时 – 官方文档YYSD
    使用计时器 · Cocos Creator
    let interval = 1;

             // 重复次数
    
             let repeat = moveNum;
    
             // 开始延时
    
             let delay = 1;
    
             this.schedule(function() {
    
                 // 这里的 this 指向 component
    
                 //this.doSomething();
    
                 this.boxNode = find("Canvas/box")
    
                 this.boxNode.setPosition(this.boxNode.getPosition().x +100,this.boxNode.getPosition().y)  
    
             }, interval, repeat, delay);
  1. 循环N次
    for(var i =0;i <moveNum;i++){

             console.log("第"+i+"次移动")
    

}

  1. 写入及读取本地数据
    写:
    localStorage.setItem(“mapPos”,mapPos.toString())

    let localMapPos = localStorage.getItem(“mapPos”)
    console.log(“获取了本地数据mapPos:”+localMapPos)
  1. localStorage 写入及读取json数据
    写入:
    let str = JSON.stringify(obj);
    localStorage.setItem(“str”, str);
    读取:
    let get = localStorage.getItem(“str”); // 取值
    JSON.parse(get) // 再转回来
  1. 代码生成预制体在Canvas下(预制体需要在resources文件夹下的prefab目录下)

resources.load(“prefab/MissLi”, Prefab, (err, prefab) => {

            const MissLiNode = instantiate(prefab);

        this.canvasNode = find("Canvas")

        this.canvasNode.addChild(MissLiNode);

定义输入事件

上文提到的输入事件,都可以通过接口 input.on(type, callback, target) 注册。可选的 type 类型包括:

输入事件 type 类型
鼠标事件 Input.EventType.MOUSE_DOWN

Input.EventType.MOUSE_MOVE
Input.EventType.MOUSE_UP
Input.EventType.MOUSE_WHEEL|
|触摸事件|Input.EventType.TOUCH_START
Input.EventType.TOUCH_MOVE
Input.EventType.TOUCH_END
Input.EventType.TOUCH_CANCEL|
|键盘事件|Input.EventType.KEY_DOWN (键盘按下)
Input.EventType.KEY_PRESSING (键盘持续按下)
Input.EventType.KEY_UP (键盘释放)|
|设备重力传感事件|Input.EventType.DEVICEMOTION|

  1. for循环遍历Enmey的子节点

Enmey是 所有子节点的父节点

for(let i = 0; i < this.Enmey.children.length;i++) {
console.log(“进入FOR 循环了”);
let enemyPos:Node= this.Enmey.children[i]
console.log(enemyPos);

}

JS - 生成随机数的方法汇总(不同范围、类型的随机数)_growb的博客-CSDN博客 各种JS 随机数

14.在A脚本里面调用B脚本的C函数

image

  1. 游戏暂停与 继续游戏

    director.pause()
    director.resume()
  1. 提供属性面板推拽的节点
    @property(Prefab)
    public bow: Prefab = null;

    @property(Node)
    public skill: Node = null;

@property() 空格里能填几种类型 文档也没说 屮 屮, 后面补全

  1. 或且非

或 ||
且 &&
非 !=

  1. 字符串与数字互转

数字转字符串:toString()
localStorage.setItem(“gold”,gold2.toString())
字符串转整数: Number()
let gold= localStorage.getItem(“gold”)
let gold2 = Number(gold) + this.player.getComponent(“Player”).SCORE