Steam项目推进(二)—— 在项目中使用FairyGUI

news2025/7/19 16:53:27

一、遇到的问题

昨天把代码大致清理了一遍之后,发现代码中存在很大的一个问题是数据表现耦合在一起了,如下:

using UnityEngine;
using UnityEngine.UI;

public enum CardStateType
{
    InDeck, InHand, InBattle, InSave, InAbandon
}


//卡牌的战斗形态
public class CardOperate : MonoBehaviour
{
    [Header("隶属的卡牌")]
    public Card ownCard;

    public int thisId;


    //展示属性:属性会挂钩到其他text 用于显示
    public int id;

    [Header("展示属性(界面赋值)")]
    public Text nameText;
    public Text costText;
    public Text descriptionText;
    public Image cardImage;
    public Image colorFrame;

    [Header("手牌区")]
    public GameObject hand;	 //表现
    [Header("出牌区")]
    public GameObject battle;
    [Header("弃牌区")]
    public GameObject abandon;

    [Header("留牌区")]
    public GameObject savePanel;

    private CardStateType currentState;     //数据

    public static bool UcanReturn;

    public CardStateType CurrentState()
    {
        return this.currentState;
    }  
}

初步的想法是抽离出Model层和View层,Model层保存数据,View做表现。需要搭建一个事件系统来隔离两者的耦合。

然后因为做UI以及UI管理是我的弱项,所以这边打算引入之前公司使用的FairyGUI来处理UI。 (与UGUI本身资源和代码的耦合度较高也有一定关系吧

二、搭建过程

1、下载方法可看这篇博客:fairygui简单使用(unity)

2、在untiy的资源商店中下载FairyGUI插件,不然导出的代码会报错。

2、新建一个按钮组件,可看官网:创建按钮组件的方式

把FairyGUI编辑器的打开添加到自定义菜单栏,这样就省不少功夫。
新建一个C#文件,并输入如下代码

using UnityEngine;
using UnityEditor;
using System.Diagnostics;

public class UnityEdite
{
    [MenuItem("FairyGUI/Open")] // MenuItem在编辑器中创建相对应的菜单栏
    static void OpenFairyGUI()
    {
        string exePath = @"D:\FairyGUI\FairyGUI-Editor" + "/FairyGUI-Editor.exe"; //FairyGUI编辑器路径
        Process.Start(exePath);
    }
}
//如果没有效果,那么你需要检查下:
//1. 项目中的所有代码没有报错,能够正常编译
//2. 如果1没问题,就重启下unity

在这里插入图片描述

FairyGUI的学习

在这里插入图片描述
导入FairyGUI后,会有UIPanel和UICAmera两个基础组件。
1、UIPanel:创建它,并配置属性,可以生成所有你在FairyGUI里编辑的组件。
2、UICamrea:FairyGUI自带的一个相机,可以替换掉主相机。

三、遇到的问题

1、根据文档中进行发布时,一直没办法生成代码,设置了,但FUIExport文件夹为空。如下

在这里插入图片描述
解决方案:因为只是勾选了全局设置的“发布代码”,没有勾选包设置的发布代码。
在这里插入图片描述
在这里插入图片描述
勾选后成功解决。

2、导出代码后,尝试创建一个界面却一直报错。提示强转类型失败。
在这里插入图片描述
解决方案:根据官网提示,需要先Binder.BindAll(),加上后问题解决。
在这里插入图片描述

四、参考文章

fairygui简单使用(unity)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Cisco简单配置(十八)—OSPF

开放式最短路径优先(Open Shortest Path First,OSPF)是广泛使用的一种动态路由协议,它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分…

设计模式-组合模式(决策树)

一、只如初见 组合模式也许大家第一联想到的就是把两个模块组合起来使用,其实好像是这样也其实不是这样,废话不多说,学习一件新的事物总要先了解一下他的概念,老规矩先上概念(摘自百度百科): 组…

【活动预告】金融大数据治理实践分享(12/03)

原创 DAMA数据管理 # 本期主题 金融大数据治理实践分享 数字化时代,数据的价值受到越来越多的关注,有人将其比作黄金,也有人将其比作石油,成为组织中的最重要资产之一。针对数据这种有特殊属性的资产,也存在着采集…

[论文阅读] 颜色迁移-N维pdf迁移

[论文阅读] 颜色迁移-N维pdf迁移 文章: N-Dimensional Probability Density Function Transfer and its Application to Colour Transfer, [paper ][code] 1-算法原理 简单来说, 本文将图像看作是随机变量的一组样本, 图像之间的颜色迁移可以看作是样本之间分布的迁移. 因而…

G1D23-RAGA报名蓝桥Attackg安装cudatorch

昨天太摸鱼啦~不过蛮开心的哈哈 今天主要是把积累的ddl都清理一下!!!第一项就是我和舍友一起读的论文嘿嘿!! 一、RAGA (零)总结(仅模型) 作为数据挖掘顶会2021年的论文…

【MATLAB教程案例46】三维数据的插值和滤波处理matlab仿真

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》 本课程学习成果预览: 目录 1.软件版本 2.三维数据插值

openFeign夺命连环9问,这谁受得了?

1、前言 前面介绍了Spring Cloud 中的灵魂摆渡者Nacos,和它的前辈们相比不仅仅功能强大,而且部署非常简单。 今天介绍一款服务调用的组件:OpenFeign,同样是一款超越先辈(Ribbon、Feign)的狠角色。 文章目…

linux 安装新版傻妞+TG+青龙

一键安装命令 #国内服务器要先设置网络代理set sillyGirl download_prefix https://yanyu.ltd/#一键安装命令ssillyGirl;aarm64;if [[ $(uname -a | grep "x86_64") ! "" ]];then aamd64;fi ;if [ ! -d $s ];then mkdir $s;fi ;cd $s;wget https://yanyu.…

git回滚指定版本相关操作

当提交推送到远程仓库之后,需要回退到特定版本,去修改该代码,然后在推送到远程仓库; 1.查看目前版本状态: git status 2.查看提交日志,找到需要回滚的git版本号 git log 3.将当前分支回滚到id9c45732c5701fc84164bebe3c05760a72a4ece12 #这个是软回滚&am…

一个基于容斥原理的概率模型

为论述概率模型的思想,本部分以下图所描述的情况作为例子讲述,为简化图省略线路开关。 不同于单供网络,双供网络由于多条联络线,存在多个扩展供电方案。设供电路径P(p1,p2,..,pn)P(p_1,p_2,..,p_n)P(p1​,p2​,..,pn​)&#xff…

wodFtpDLX ActiveX 组件--Crack

wodFtpDLX ActiveX 组件 FTP 组件,安全(SSL、SSH)FTP ActiveX 客户端 FtpDLX 组件是 FTP(或者更确切地说,文件传输)客户端组件。它不仅提供老式的 FTP 协议,还允许您使用安全的 SFTP&#xff08…

短视频怎么在平台规则之内更快更好的吸引用户粉丝的关注

短视频怎么在平台规则之内更快更好的吸引用户粉丝的关注 每天一组短视频运营小技巧,碎片化学习优化自己的账号,今天来学习内容发布技巧: 内容上: 关心用户喜欢看什么 ,在视频中埋下泪点笑点吐槽点以及所有你能想到的可以激发观众…

浅谈Linux系统信息与资源

大家将来应用开发Linux程序,无论是ARM架构的板子,还是在Linux上开发应用程序,相信大家都会用到到一些系统相关的信息,譬如时间、日期、以及其它一些系统相关信息,今天带大家了解一下如何通过 Linux 系统调用或 C 库函数…

springMVC参数绑定源码分析

一、遇到的问题 1. 在请求时get方法路径传参,接收时,用枚举接收,出现参数绑定错误 请求路径:http://localhost:9104/api/sent/test2?type0 后端代码: GetMapping("/test2")public String openNewFile2(…

基于优先级的时间片轮转调度算法(C语言实现)

已剪辑自: http://www.demodashi.com/demo/15341.html 基于优先级的时间片轮转调度算法 1. PCB结构(Block) 由此定义如下结构体: typedef struct Block {int processID; // 进程号int priority; // 优先级int status; // 状态double arriv…

PyQt5 JavaScript调用PyQt代码

JavaScript调用PyQt代码JavaScript调用PyQt代码,是指PyQt可以与加载的Web页面进行双向的数据交互。1.创建QWebChannel对象:创建QWebChannel对象,注册一个需要桥接的对象,以便Web页面的JavaScript使用。其核心代码如下:channel QW…

JUC并发编程与源码分析笔记01-本课程前置知识及要求说明

JUC是什么 JUC是指java.util.concurrent包,在并发编程中广泛使用。 官方文档搜索java.util.concurrent,可以看到有java.util.concurrent、java.util.concurrent。atomic、java.util.concurrent.locks。 本课程学生对象(非零基础&#xff09…

记 linux 系统编译好的exp提权提示无gcc

文章目录CVE-2021-4034 漏洞 polkit 提权在目标linux主机没有gcc的情况下提权,在很多情况下的一些内核漏洞需要在目标主机上使用gcc编译才可以正常运行,在本地编译好的exp如果本地系统与目标主机系统不一致,上传执行很大机会导致系统崩溃如脏…

糟了,线上服务出现OOM了

前言 前一段时间,公司同事的一个线上服务OOM的问题,我觉得挺有意思的,在这里跟大家一起分享一下。 我当时其实也参与了一部分问题的定位。 1 案发现场 他们有个mq消费者服务,在某一天下午,出现OOM了,导…

docker技术简介

目录 概念 命令 数据卷 DockerFile 应用部署 服务编排 私有仓库 概念 Docker 是一个开源的应用容器引擎,而容器技术是一种轻量级虚拟化方案(虚拟机太繁重了不够轻量级),Docker的基础是Linux容器(LXC&#xff09…