1.项目目录
下载
npm i protobufjs
写入package.json
npm install --save protobufjs
下载并写入生成工具
npm i --save-dev protobufjs-cli
2.引入
import protobufjs from 'protobufjs';
3.解决引入报错 tsconfig.json文件中
"compilerOptions": { "allowSyntheticDefaultImports": true, // 需要开启 }
4.编写生成脚本 package.json 路径自己确定
"scripts": { "build-proto:pbjs": "pbjs --dependency protobufjs/minimal.js --target static-module --wrap commonjs --out ./Proto.js/proto.js ./Proto/*.proto", "build-proto:pbts": "pbts --main --out ./Proto.js/proto.d.ts ./Proto.js/*.js" },
在指定存放碎片图片的文件夹中右键创建一个《自动图集配置》,打包的时候就会将当前文件夹中的图片打包成一个图集,减少DC。优点就是不用事先使用TexturePacker去打包成图集,直接使用碎图进行开发,提高效率。
const {ccclass,property} = cc._decorator; @ccclass export default class NewClass extends cc.Component{ onLoad(){ //一定要在onLoad方法里面调用,start方法里面无效 cc.director.getPhysicsManager().enabled = true cc.director.getPhysicsManager().gravity = cc.v2(0,-320) } }
const {ccclass, property} = cc.decorator @ccclass export default class NewClass extends cc.Compont{ @property(cc.Animation) animation:cc.Animation = null onLoad(){ let animation = this.animation animation.on("play",this.onPlay,this) //stop lastframe finished pause resume //off 在onDestroy 关闭监听 } }
const {ccclass, property} = cc._decorator; @ccclass export default class NewClass extends cc.Component { checkBoxClicked(toggle:cc.Toggle) { console.log ("是否选择:" + toggle.isChecked) } }
const {ccclass, property} = cc._decorator; @ccclass export default class NewClass extends cc.Component { @property(cc.Node) image: cc.Node @property(cc.AudioSource) music: cc.AudioSource @property(cc.Slider) slider_h: cc.Slider @property(cc.Slider) slider_v: cc.Slider onLoad () { this.slider_v.progress = 0.5; this.slider_h.progress = 0.5; this._updateImageOpacity(this.slider_v.progress); this._updateMusicVolume(this.slider_h.progress); } _updateImageOpacity (progress) { this.image.opacity = progress * 255; } _updateMusicVolume (progress) { this.music.volume = progress; } onSliderVEvent (sender, eventType) { this._updateImageOpacity(sender.progress); } onSliderHEvent (sender, eventType) { this._updateMusicVolume(sender.progress); } }
<color=#ff0000>妈妈</c>再也<size=20>不用担心</size> 我在 <size=56><outline width=4 color=#00ff00 click="clickme"><color=red>Creator</c></c></s> 里面 使用<color=#ff0000>五</c><color=#00ff00>彩</c><color=#00e0ff>缤</c><color=#ffff00>纷</>, <size=20>大小</s><size=60>不一</s> 的<size=33>文字</s>了
再RichText组件下添加自己的脚本,声明clickme方法,当点击富文本的Creator时,该方法就会触发了
const {ccclass, property} = cc._decorator; @ccclass export default class NewClass extends cc.Component { @property(cc.ScrollView) scrollview:cc.ScrollView = null @property(cc.Node) itemPrefab:cc.Node = null @property(cc.Node) content:cc.Node = null start () { let itemNum = 20 let space = this.content.getComponent(cc.Layout).spacingY //要重新计算内容的高度 内容添加一个Layout组件就不用自己设定高度位置 //设置Layout的ResizeMode为自动计算大小也就不用自己计算内容大小了 this.content.height = (this.itemPrefab.height + space) * itemNum for(let i = 0;i < itemNum;i++) { let item = cc.instantiate(this.itemPrefab) this.content.addChild(item) item.x = 0 } let action = new cc.Tween() action.target(this).delay(5).call(()=>{ //2秒滑动到指定位置 this.scrollview.scrollToOffset(new cc.Vec2(0,800),2) }).start() } }
const {ccclass, property} = cc._decorator; @ccclass export default class NewClass extends cc.Component { @property(cc.ProgressBar) bar:cc.ProgressBar = null pro:number = 0 update (dt) { this.pro += dt / 10; if(this.pro > 1) { this.pro = 0 } this.bar.progress = this.pro } }
const {ccclass, property} = cc._decorator; @ccclass export default class NewClass extends cc.Component { onLoad () { let lab:cc.Label = this.getComponent(cc.Label) lab.string = "哈哈哈哈哈哈哈" lab.horizontalAlign = cc.Label.HorizontalAlign.CENTER lab.fontSize = 33 } }