FariyGUI × Cocos Creator 入门

前言

程序员向的初探Cocos Creator结和FairyGUI的使用,会比较偏向FairyGUI一点,默认各位读者都熟练掌握Cocos Creator以及js/ts脚本编写。
初探门径,欢迎大佬指教,欢迎在评论区或私信与本人交流,谢谢!

下载和安装

都不需要科学上网,非常友好。

  1. 下载fgui:https://www.fairygui.com/
    在这里插入图片描述
  2. 下载Cocos Creator并安装编辑器:https://www.cocos.com/creator-download

下下来后是一个 Cocos Dashboard,在Dashboard里面可以安装各个版本的Cocos Creator编辑器。
在这里插入图片描述

  1. fgui自带文档:https://www.fairygui.com/docs/editor
    fgui自带demo(虽然没有在文档里直接给出链接,但是在github上搜索fariygui即可搜到)https://github.com/fairygui/FairyGUI-cocoscreator
  2. Cocos Creator自带文档:https://docs.cocos.com/creator/manual/zh/
  3. 本文对应demo:https://gitcode.net/qq_36286039/fgui_cocos_240 (这是我的个人仓库,还是推荐看官方的)

第一个fgui项目

1. 新建项目

在这里插入图片描述
在指定位置创建一个新的UI项目。

  • 项目名称: 项目名称。可以使用中文,创建后也可以随便修改。
  • 项目位置: 项目位置。注意:请不要使用带中文的路径。
  • 在此位置创建新目录: 如果勾选,将在指定的路径创建名称为项目名称的子目录。如果不勾选,则在指定的路径直接创建项目。
  • 项目类型: UI项目类型,即UI实际运行的平台。不同的平台在显示效果、发布结果上有一定的差别。不过不需要担心这里选择错了项目类型,在项目创建后可以随时调整UI项目类型,操作位置在菜单“文件->项目设置”里。

FairyGUI的项目在文件系统的结构为:

  • assets: 包内容放置目录。
  • package1: 每个包一个目录。目录名就是包名。
  • assets_xx: 分支内容放置目录,xx是分支名称。多个分支则存在多个类似名称的目录。
  • settings: 配置文件放置目录。
  • .objs: 内部数据目录。注意:不要加入版本管理,因为这里的内容是不需要共享的。
  • test.fairy: 项目标识文件。文件名就是项目名称,可以随便修改。

2. 编辑器基础

在这里插入图片描述
编辑器主界面由以下几个部分组成:

  1. 主菜单。在Mac系统里,主菜单和Mac应用程序菜单集成;在Windows系统里,主菜单显示在主界面最上方。
  2. 主工具栏。常用的功能按钮。
  3. 文档视图。包括已打开的文档的列表,侧工具栏和舞台区域。
  4. 状态栏。显示控制台输出的最后一条信息。点击可以打开控制台。
  5. 各个功能视图。用户可以按使用习惯将它们拖动到不同位置,也可以关闭。右键点击面板的标题栏,在右键菜单中选择“关闭”即可。如果要重新打开,在“主菜单->视图”里操作。

多余的描述我就不在这里赘述了,看fgui的官方文档吧,相信各位都很快能够明白每个按钮的意义,不会的查下官方文档,这篇文章只挑和Cocos比较不一样的或需要注意的地方讲。

3. 包

官方文档:https://www.fairygui.com/docs/editor/package

fgui的包的定义和Cocos Creator里的subpackage的定义类似,因此做好包内资源的管理是很重要的。

看一下fgui的demo里分的包:
在这里插入图片描述
在Cocos Creator里显示的样式:

在这里插入图片描述
在BasicsDemo.ts里调用的有关包的加载和卸载:

onLoad() {
    //......
    fgui.UIPackage.loadPackage("UI/Basics", this.onUILoaded.bind(this));
}
onUILoaded() {
    this._view = fgui.UIPackage.createObject("Basics", "Main").asCom;
    //......
}
onDestroy() {
	//......
    fgui.UIPackage.removePackage("Basics");
}

4. 制作第一个组件

新建fgui项目之后,改一下包名和组件的名字,引入一张图片。
在这里插入图片描述
将画布大小改为720*1600(也可以不改,按个人习惯来就好)
在这里插入图片描述
和Cocos Creator不同的是,fgui里锚点默认在左上角,而不是正中心,如果想要锚点在中心,需要设置一下。
同样,这里也是按照自己的习惯来就好,我还是比较习惯锚点在中心一点。
在这里插入图片描述
在这里插入图片描述

将图片放入舞台

在这里插入图片描述
在这里插入图片描述

使用九宫图片

官方文档:https://www.fairygui.com/docs/editor/image
双击图片,进入图片编辑,选择九宫格。
在这里插入图片描述
缩放图片即可看见效果。
在这里插入图片描述

添加文本

在这里插入图片描述

在按钮上添加文本

当我们需要添加一个文本在按钮上时,不能直接这么往上摆,需要让他们有父子关系。观察一下demo里的按钮都是怎么做的:
在这里插入图片描述
button被单独拎出来了,而且上面有一个title文本,我们也照做一个。
点击上方在这里插入图片描述新建一个按钮。
设置尺寸300*100
在这里插入图片描述
将原本的矩形换成我们自定义的图片
在这里插入图片描述
在这里控制显示样式
在这里插入图片描述
在这里插入图片描述
在这里切换按钮状态查看按钮样式
在这里插入图片描述
做好后应该这样
在这里插入图片描述

ctrl+s保存,回到Main
将按钮拖入,改一下位置,保存。
在这里插入图片描述

加一个简单的背景,这个场景就算做完了
在这里插入图片描述

发布

官方文档:https://www.fairygui.com/docs/editor/publish
打开demo的发布设置看一眼,照葫芦画瓢填一下
在这里插入图片描述
在这里插入图片描述
坐等发布
在这里插入图片描述
发布后可以在相应路径看到
在这里插入图片描述

在Cocos里使用

官方文档:https://www.fairygui.com/docs/sdk/creator
新建一个Cocos项目,按如下路径导入资源,并新建一个场景。
这里建议新建一个Cocos 2.4.0的项目,以保证和demo一样。
看demo知道,核心库是fairygui.js,因此我们把它复制粘贴进来。
在这里插入图片描述
新建一个常驻节点,编写一个脚本Main.ts
在这里插入图片描述

const { ccclass, property } = cc._decorator;

@ccclass
export default class Main extends cc.Component {
    private _view: fgui.GComponent;

    onLoad() {
        fgui.GRoot.create();
        fgui.UIPackage.loadPackage("UI/MainPkg", this.onUILoaded.bind(this));
    }

    onUILoaded() {
        fgui.UIPackage.addPackage("UI/MainPkg");
        this._view = fgui.UIPackage.createObject("MainPkg", "Main").asCom;
        this._view.makeFullScreen();
        fgui.GRoot.inst.addChild(this._view);
    }

    onDestroy() {
        this._view.dispose();
    }

}

运行,可以看到界面已经出来了,且没有报错,就是位置有点偏,因为我们没有设widget。
在这里插入图片描述
加了居中之后,我们的画面居中了
在这里插入图片描述
在这里插入图片描述
加了宽高关联之后,可以看到已经铺满了
在这里插入图片描述
在这里插入图片描述

结语

本教程到此结束,本人萌新一枚,由于能搜到的fgui×Cocos Creator的资料很少(大部分都是unity的),特分享学习经验。如有这方面的大佬,欢迎与我讨论技术~
至此,第一个场景以及做好,更多内容,请自行阅读官方提供的demo。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/400704.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微服务篇之雪崩、降级和熔断

一、服务雪崩 服务雪崩:一个服务失败,导致整条链路的服务都失败的情形。 二、服务降级 服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃。 …

docker pullpush 生成镜像文件并push 到阿里云

pull docker docker pull ultralytics/ultralytics # 拉取yolov8的镜像仓库 docker run -it ultralytics/ultralytics # 运行镜像 conda create -n gsafety python3.8 # 创建环境 source activate gsafety # 激活环境 pip install -i https://pypi.tuna.tsinghua.edu.cn/simp…

C++ Primer 笔记(总结,摘要,概括)——第7章 类

目录 ​编辑 7.1 定义抽象数据类型 7.1.1 设计Sales_data类 7.1.2 定义改进的Sales_data类 7.1.3 定义类相关的非成员函数 7.1.4 构造函数 7.1.5 拷贝、赋值和析构 7.2 访问控制和封装 7.2.1 友元 7.3 类的其他特性 7.3.1 类成员再探 7.3.2 返回*this的成员函数 7.3.3 类类…

【机器学习科学库】全md文档笔记:Jupyter Notebook和Matplotlib使用(已分享,附代码)

本系列文章md笔记(已分享)主要讨论人工智能相关知识。主要内容包括,了解机器学习定义以及应用场景,掌握机器学习基础环境的安装和使用,掌握利用常用的科学计算库对数据进行展示、分析,学会使用jupyter note…

电脑远控工具Venom Rat 毒液的测试和预防

电脑远控工具的概念 电脑远控工具是一种软件程序,能够让用户通过网络在远程位置控制另一台计算机。使用远控工具,用户可以在不同地点之间实现计算机的连接和控制,方便远程管理、技术支持、远程教学等应用场景。远控工具通常包括远程桌面查看…

Redis之缓存击穿问题解决方案

文章目录 一、书接上文二、介绍三、解决方案1. 单例双检锁2. 缓存预热和定时任务 一、书接上文 Redis之缓存雪崩问题解决方案 二、介绍 缓存击穿就是大量并发访问同一个热点数据,一旦这个热点数据缓存失效,则请求压力都来到数据库。 三、解决方案 1…

git版本回退在eclipse和命令中的操作

一.背景 老程序员了,熟悉eclipsesvn,git用的不溜。近几年用了git,偶尔修改了某个文件希望放弃本次修改重新恢复到最新版本重新修改。或者回退到某个版本,再修改。记录一下Eclipse中的操作,和命令操作的情况。 二.Ecli…

如何在debian上实现一键恢复操作系统?

在Debian或任何其他Linux发行版上实现一键恢复操作系统,需要创建一个系统镜像或快照,并设置一个简单的方法来从该镜像恢复。以下是创建和恢复系统的基本步骤: 1. 创建系统镜像: 使用像dd,rsync或专门的备份工具&#…

解决Uncaught SyntaxError: Cannot use import statement outside a module(at XXX)报错

报错原因:这个错误通常是因为你正在尝试在一个不支持 ES6 模块语法的环境中使用 import 语句。这可能是因为你的代码是在一个只支持 CommonJS 或 AMD 模块系统的环境中运行的,或者你的代码运行的环境没有正确配置以支持 ES6 模块。如果是在浏览器环境&am…

C++面向对象程序设计-北京大学-郭炜【课程笔记(四)】

C面向对象程序设计-北京大学-郭炜【课程笔记(四)】 1、this指针1.1、this指针的作用1.2、this指针和静态成员函数 2、静态成员变量和静态成员函数2.1、基本概念2.2、基本概念总结2.3、如何访问静态成员2.4、静态成员变量的使用场景(重要&…

浏览器垃圾回收机制与 Vue 项目内存泄漏场景分析

目录 一、Vue项目 二、浏览器垃圾回收机制 三、内存泄漏场景 四、Vue项目会内存泄漏吗? 一、Vue项目 Vue.js 是一种流行的JavaScript 框架,用于构建用户界面。以下是关于Vue项目的一些基本信息和概念: 安装 Vue:您可以通过使…

探究网络工具nc(netcat)的使用方法及安装步骤

目录 🐶1. 什么是nc(netcat)? 🐶2. nc(netcat)的基本使用方法 2.1 🥙使用 nc 进行端口监听 2.2 🥙使用 nc 进行端口扫描 2.3 🥙使用 Netcat 进行文件传输…

报表控件Stimulsoft 新版本2024.1中,功能区工具栏新功能

今天,我们将讨论Stimulsoft Reports、Dashboards 和 Forms 2024.1版本中的一项重要创新 - 在一行中使用功能区工具栏的能力。 Stimulsoft Ultimate (原Stimulsoft Reports.Ultimate)是用于创建报表和仪表板的通用工具集。该产品包括用于WinF…

第六十六天 API安全-接口安全阿里云KEY%postmanDVWSXEE鉴权泄露

第66天 API安全-接口安全&阿里云KEY%postman&DVWS&XEE&鉴权&泄露 知识点 1.HTTP类接口-测评 2.RPC类接口-测评 3.Web Service类-测评 参考链接:https://www.jianshu.com/p/e48db27d7c70 内容点: SOAP(Simple Object Access Prot…

板块一 Servlet编程:第八节 文件上传下载操作 来自【汤米尼克的JavaEE全套教程专栏】

板块一 Servlet编程:第八节 文件的上传下载操作 一、文件上传(1)前端内容(2)后端内容 二、文件下载(1)前端的超链接下载(2)后端下载 在之前的内容中我们终于结束了Servle…

《安全历史第1讲——从故宫修建看软件物料清单的重要性》

故宫,这座中国传统文化的重要代表和象征性建筑已屹立近600年,是世界上现存规模最大、保存最为完整的木质结构古建筑之一。 故宫之所以能至今保存完好,除持续保护和修缮外,其使用的木材和砖石等材料也经过了精挑细选,保…

仿12306校招项目-项目业务和架构

目录 业务图 用户管理 业务难点 1. 如何确定用户注册信息的真实性 2. 面对亿级用户量 3. 支持多种登录方式会造成读请求扩散,需要解决用户定位问题 4. 高并发场景下缓存穿透问题需要有效解决,避免数据库压力过大 5. 明文存储用户敏感信息会造成安…

js设计模式:委托者模式

作用: 一个对象可以将一些任务交给另外一个对象去执行,两者执行这个方法的结果是一致的 被委托者去替代委托者完成了某个功能,通常各种服务镜像就是这样的 示例: //npmconst npm {downModules(name){console.log(下载${name}依赖包)}}//mirrornpmconst mirrornpm {src:npm…

如何使用ArcGIS Pro生成等高线

无论在制图还是规划中,经常会使用到等高线,大多数情况下,从网上获取的高程数据都是DEM文件,我们可以通过ArcGIS Pro来生成等高线,这里为大家介绍一下生成方法,希望能对你有所帮助。 数据来源 教程所使用的…

IO 作业 24/2/21

1、使用多线程完成两个文件的拷贝&#xff0c;第一个线程拷贝前一半&#xff0c;第二个线程拷贝后一半&#xff0c;主线程回收两个线程的资源 #include <myhead.h> //定义分支线程1 void *task1(void *arg) {int fdr-1;//只读打开被复制文件if((fdropen("./111.txt…