Cocos creator使用protobufjs

目录

  • 一、简介
    • 参考
    • 其他
  • 二、protobufjs使用步骤
      • 1.protobufjs安装到全局
      • 2.编写 文件名.proto
      • 3.执行命令==生成==js文件(此处粘贴了参考文章)
      • 我在此遇到了 报警提示
            • 再次尝试
      • 4.引入插件
      • 5.==加载==
      • creator报错
      • 6.编解码

一、简介

来源json和protobuf格式的对比
json明文传输,protobuf二进制编码传输。就是说同样的数据量,protobuf速度更快。但是一般只有传输的数据很多的时候,才会有区别。如果你只是传输几K的数据的话,几乎没什么区别。当然,如果传输的数据量达到了几百M或几百G的时候,那肯定选protobuf,不过这种时候,我们自己一般也都会做数据压缩。

json测试的时候方便得多,建议直接使用json就好了。

如果是长连接的话,需要不断进行通讯,那就选择protobuf。

参考

使用版本:
cocos creator 2.4.6
protobufjs 6.11.3

今天学习了protobuf的使用,
1.有两种生成方式
protoc.exe和protobufjs
protobuf 是否只能用protobufjs
Cocos creator使用protobufjs_第1张图片
2.有两种加载方式:

静态加载(适用于微信小游戏)

动态加载(不适用于微信小游戏)
参考文章:
Creator | 微信小游戏使用protobuf/protobuf的两种加载方式

其他

学习的过程中遇到的一些坑:
1.执行pbjs -t static-module -w commonjs -o User.js *.proto 时提示我
Cocos creator使用protobufjs_第2张图片

pbjs : 无法将“pbjs”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确
,然后再试一次。
所在位置 行:1 字符: 1
+ pbjs -t static-module -w commonjs -o User.js *.proto
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (pbjs:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

2.引入生成好的文件提示引入模块错误:

load script [./User] failed : Error: Cannot find module './User'

二、protobufjs使用步骤

具体理论、细节等可以参考别人的文章

1.protobufjs安装到全局

快捷键win+r 填入cmd,打开命令行,执行:npm install -g protobufjs

2.编写 文件名.proto

syntax = "proto3";//标明proto版本
package usermsg;//包名

//一个message相当于一个类
//1,2,3不代表参数默认值,而是参数标签
//repeated 可以理解为数组

message User {
    string id = 1;
    string username = 2;
    string password = 3;
    int32 heroCount = 4;
    string message = 5;
}

3.执行命令生成js文件(此处粘贴了参考文章)

生成单个proto的js:

pbjs -t static-module -w commonjs -o User.js User.proto

将目录内所有proto生成一个js:

pbjs -t static-module -w commonjs -o User.js *.proto

(这是使用protobufjs生成的方式,proto.exe的方式未学习,点击此文章学习proto.exe方式)

我在此遇到了 报警提示

如果你的计算机权限给的正常的话是不会出现这个坑的,你可以略过此节

pbjs : 无法将“pbjs”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确

此时我把 文件名.proto文件放在了
C:\Users\用户名\AppData\Roaming\npm 下,
执行./pbjs -t static-module -w commonjs -o User.js User.proto 依旧出错,提示我:

未对文件 C:\Users\用户名\AppData\Roaming\npm\pbjs.ps1 进行数字签名。无法在当前系统上运行该脚本。有关运行脚本和设置执行策略的详细信息,请参阅 h
ttps:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。

查询了百度,根据文章执行了操作
1.因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies
2.无法加载文件进行数字签名,无法在当前系统上运行该脚本。有关运行脚本和 设置执行策略的详细信息

再次尝试

快捷键win+r 填入cmd,打开命令行,执行:

C:\Windows\system32>e:

E:\

E:\>cd E:\cocos\netty\groupChat\assets\resources\protofile

E:\cocos\netty\groupChat\assets\resources\protofile>pbjs -t static-module -w commonjs -o User.js *.proto

发现文件中可以生成了
Cocos creator使用protobufjs_第3张图片

4.引入插件

打开文件夹

C:\Users\用户名\AppData\Roaming\npm\node_modules\protobufjs\dist

将protobuf.js 拉到creator 客户端,并设置为插件
Cocos creator使用protobufjs_第4张图片

5.加载

修改刚刚生成的js,引入正确的protobuf.js

// var $protobuf = require("protobufjs/minimal");
var $protobuf = protobuf;

因为我项目用的Ts写的所以再继续生成ts文件

pbts -o User.d.ts User.js

修改第一行的引用语句为:

import * as $protobuf from "路径/protobufjs";

此处引号内是:“protobufjs插件文件的位置在哪 ”
(这是加载静态文件的方式,动态加载方式的未学习
点击此文章理解动态加载)

creator报错

因为我把”生成文件.js“删掉了,只留下了”生成文件.d.ts“提示报错

load script [./User] failed : Error: Cannot find module ‘./User’
Cocos creator使用protobufjs_第5张图片
查询ccc社区发现说”生成文件.js“不能删掉,不能改名
TypeScripts load script […/MsgProto] failed : Error: Cannot find module ‘…/MsgProto’
Cocos creator使用protobufjs_第6张图片
在这里插入图片描述

你可以将”文件名.proto“文件删除,但生成的文件一个都不能删除

6.编解码

Creator | 微信小游戏使用protobuf/protobuf的两种加载方式
这篇文章讲的很清楚

你可能感兴趣的:(笔记,cocos-creator,protobuf)