Unity项目开发必备技能——字体替换工具的使用(上)

news2024/12/28 21:14:11

在平常我们做unity项目的时候,工具类的使用对于我们来说是必不可少的组成部分,因为工具类可以解决实际问题或者是优化我们已经实现的功能。

图片

当你在做项目的时,我们搭建完场景后,当前场景中你所创建的UI组件中的Text的字体,如果不符合你的要求,效果不好或者说是与你的游戏主题不搭;并且你的Text组件又创建的很多,也就是说如果你的UGUI界面已经搭完的情况下,想要更换一种字体的时候,逐个寻找Text更换字体的过程中工作量无形加大,很可能会遗漏并且机械的工作会使人疯狂,那么这个时候使用字体替换工具可以使你的操作起来自动化、更加方便快捷、节省时间精力。

字体替换工具,是可以帮助我们批量替换场景中Text组件中字体的工具。那你知道如何创建场景中Text的字体替换工具吗?我讲一下我是如何实现的,但是要注意呦!字体替换工具的实现方法并不是唯一,仅供参考哈!

首先讲一下我的思路:批量修改预制体中存在的Text组件的字体数据,指定某种字体替换到另外一种字体。创建新的Editor窗口和工具,通过代码获取和显示窗口,设置窗口名称并且在菜单窗口中显示Tool工具,点击按钮控件则更换字体,获取当前场景并且判断是否保存最后找到当前场景中的所有Text更换字体(当然,也可以是项目内的所有场景)。

接下来讲一下准备工作:

Assets文件夹中新建一个文件夹命名为Editor并且创建一个脚本FontTools;

图片

讲解代码:

1. 声明三个变量,分别是字体工具窗口为空的变量、替换上来的字体的变量、替换下去的字体的变量;

2. 在Unity的菜单栏中添加Tool工具;

3. 写一个展示窗口的方法ShowToolWindow();

  ①判断窗口是否为空,如果为空则获取窗口

  ②设置窗口的名称

  ③显示窗口

1. OnGUI方法:我们用来创建新的Editor窗口和工具来实现自己扩展编辑器的方法。

①OnGUI是用来创建调试工具、创建自定义属性面板、创建新的Editor窗口和工具达到扩展编辑器效果;

②EditorGUILayout.ObjectField表示选择物体;

③通过Font类来选择物体的参数为("被替换的字体", 被替换的字体, 字体类型, true);

④通过Font类来选择物体的参数为("替换的字体", 替换的字体, 字体类型, true);

⑤判断按钮控件是不是"一键替换" 是则调用更换字体方法。

2. 写一个更换字体的方法。

①获取当前场景是什么;

②判断当前场景是否保存,是则显示一个"请先保存当前场景"的对话框再返回;

③判断替换下去的字体和替换上来的字体是不是空的,是则显示一个对话框内容再返回;

④找到当前场景中所有的Text;

⑤显示一个"确定"的对话框;

⑥foreach循环一下场景中的Text,判断替换下去的字体是不是空的,不是空的再判断Text的字体等不等于替换下去的字体,如果不等于替换下去的字体则进行下一次循环,当替换下去的字体是空的时候,Text的字体则是替换上来的字体;

⑦显示一个"字体替换完成"的对话框。

图片

附上代码:

图片

代码完成后,在Unity中就可以看到通过代码添加的字体替换工具啦!如下图:

图片

图片


好啦,本篇分享的知识点篇幅过长,为了方便小伙伴们记忆与学习,我把它分为了上下两部分,今天就先分享到这里,我们下篇再见啦!

·END·

扫描二维码

⬇️

添加助教老师

⬇️

免费领取游戏策划4天训练营!

⬇️

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

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

相关文章

springboot+vue3+nuxt3+ts+minio开发的dsblog3.0前后端分离博客

springbootvue3nuxt3tsminio开发的dsblog3.0前后端博客 一、技术栈 本博客系统采用了先进且成熟的技术栈,包括Spring Boot 3、Spring Security、Vue 3、Nuxt 3、TypeScript、Vite、MinIO、Redis、Element Plus和Markdown等。这些技术共同协作,确保了博…

float32 float16 bfloat16 推理训练GPU速度和内存调研

概念: 参考:Accelerating Large Language Models with Mixed-Precision Techniques - Lightning AI 3种数量类型表示的数据范围不一样,以float32为例其中有1个符号位,8位表示指数,23位表示尾数 标准训练推理是用的fl…

力扣大厂热门面试算法题 15-17

15. 三数之和,16. 最接近的三数之和,17. 电话号码的字母组合,每题做详细思路梳理,配套Python&Java双语代码, 2024.03.11 可通过leetcode所有测试用例。 目录 15. 三数之和 解题思路 完整代码 Java Python ​…

解锁App推广新姿势:Xinstall专属二维码,让推广更高效!

在移动互联网时代,App推广的重要性不言而喻。然而,推广的过程中往往伴随着各种痛点,如何准确追踪用户来源、如何提高安装转化率等,一直是广告主和开发者们关注的焦点。今天,我们要为大家介绍一款专业的App全渠道统计服…

Java基于SpringBoot+Vue的人事管理系统,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

Linux——文件缓冲区与模拟实现stdio.h

前言 我们学习了系统层面上的文件操作,也明白了重定向的基本原理,在重定向中,我们使用fflush(stdout)刷新了缓冲区,当时我们仅仅知道重定向需要刷新缓冲区,但是不知道其所以然,今天我们来见识一下。 一、…

vue自定义主题皮肤方案

方案一:CSS变量换肤(推荐) 利用css定义变量的方法,用var在全局定义颜色变量(需将变量提升到全局即伪类选择器 :root)然后利用js操作css变量,document.getElementsByTagName(‘body’)[0].style…

nodejs版本过高导致vue-cli项目无法正常运行解决方案

95% emitting CompressionPlugin ERROR Error: error:0308010C:digital envelope routines::unsupported 方法一:在使用 npm run dev之前使用 set NODE_OPTIONS--openssl-legacy-provider Error: error:0308010C:digital envelope routines::unsupported 解决方法…

UI自动化、性能、API测试一体平台:RunnerGo

UI自动化测试已经成为现代软件开发过程中不可或缺的一部分。它能够提供诸多优势,包括提高测试效率、减少人力成本、提升软件质量等。同时,可视化工具为UI自动化测试带来了更多便利和灵活性。RunnerGo近期上线脚本录制器,根据你的测试操作直接…

【基础计算机网络2】物理层——通信基础

【前言回顾】 【考纲内容】 一、物理层的基本概念 1.1 物理层的主要任务 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒介。物理层的主要任务:确定与传输媒体接口有关的一些特性。 1.2 物理层的一些特性 机械特性…

前端报错404,nginx正常、gateway没有转发请求

问题描述:前端报错 404 Not Found 原因:nacos中对应服务没有上线,下线后,可以启动本地服务,然后在测试上调试代码。!! 记住重启对应服务,也不会自动上线。

STM32CubeMX 配置 STM32F103 工程:通过DAC输出正弦波

说明:STM32CubeMX 配置 STM32F103 工程,通过DAC输出正弦波,参考代码可自动计算频率,自动计算正弦数据。 先参考这篇文章配置时钟、工程输出的设置: STM32CubeMX 配置 STM32F103 工程:通过DAC生成三角波、…

基于PLC的城市智能交通灯三路口控制系统设计26.06

摘要 可编程控制器(Programmable Logic Controller)简称PLC。是一种综合了通讯、自动控制和计算机技术发展而来的主要用于工业生产的自动控制系统。PLC运用数字运算操作系统,采用可编程序存储器,来于储存内部程序。执行逻辑运算、定时控制、顺序控制、计…

Elastic Stack--08--SpringData框架

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 SpringData[官网: https://spring.io/projects/spring-data](https://spring.io/projects/spring-data) Spring Data Elasticsearch 介绍 1.SpringData-…

Python速度大比拼:与主流编程语言的速度对决

在评估用于具体业务的编程语言时,经常考虑的一个关键指标之一是执行速度。Python以其简单性和可读性而闻名,但有时却因其性能而受到质疑。在这个领域,我们需要深入比较分析Python在执行速度方面与其他流行的编程语言相比的情况。 程语言执行速…

lucky-canvas实现老虎机、九宫格和大转盘抽奖

lucky-canvas是一款开源免费的基于 jscanvas 的前端插件,UI精美,功能强大,使用起来比较方便。 lucky-canvas官网https://100px.net/ 一、使用 注意:下例是vue中的应用,具体还有js和uniapp中的应用,详细查…

pandas plot函数:数据可视化的快捷通道

一般来说,我们先用pandas分析数据,然后用matplotlib之类的可视化库来显示分析结果。而pandas库中有一个强大的工具--plot函数,可以使数据可视化变得简单而高效。 1. plot 函数简介 plot函数是pandas中用于数据可视化的一个重要工具&#xff0…

2.ElasticSearch 高级查询语法Query DSL实战

1. ES高级查询Query DSL ES中提供了一种强大的检索数据方式,这种检索方式称之为Query DSL(Domain Specified Language 领域专用语言) , Query DSL是利用Rest API传递JSON格式的请求体(RequestBody)数据与ES进行交互,这种方式的丰富查询语法让…

药业“钉”上云端:与钉钉共舞数字化新时代

在信息化、智能化的时代背景下,药业行业的经营管理面临着巨大的机遇与挑战。一家药业公司经营范围广泛,拥有各种传统药物配方,同时现代化的新物流线和ERP系统支持公司能够更好的运营。该药业公司与无雀科技商谈后,决定与钉钉平台合…

<Linux> 初识线程

目录 前言: 一、什么是线程 (一)基本概念 (二)线程理解 (三)线程与进程的关系 (四)简单实用线程 (五)重谈虚拟地址空间 1. 页表的大小 2…