Unity 一键修改场景中的字体,修改部分字体

news2024/12/24 6:58:40

强大的Unity编辑器扩展

介绍:

测试编辑器扩展时顺便做了个小工具,挺有意思
在这里插入图片描述
选中场景中的物体后就可以一键修改这个物体下所有字体
在这里插入图片描述
如果什么都不选,就是修改这个场景中的全部字体
在这里插入图片描述

修改完字体后记得保存场景!

代码(注意!此代码需要放在Editor文件夹下):

using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;

public class Editor_ModifyFont : EditorWindow
{
    private static Editor_ModifyFont _window;

    public Font ModifyFontText;

    Transform[] childs = null;

    bool isThisObject = true;

    [MenuItem("Tools/修改字体")]
    public static void GUIDRefReplaceWin()
    {
        Rect wr = new Rect (0, 0, 300, 200);
        // true 表示不能停靠的
        _window = (Editor_ModifyFont)GetWindowWithRect (typeof (Editor_ModifyFont),wr, true, "修改字体 (っ °Д °;)っ");
        _window.Show ();

    }
    void OnGUI()
    {
        // 要被替换的(需要移除的)
        GUILayout.Space (20);

        childs = Selection.transforms;

        ModifyFontText = (Font)EditorGUILayout.ObjectField ("字体", ModifyFontText, typeof (Font), true);
        
        if (childs.Length==0)
        {
            GUILayout.Label ("修改当前场景全部字体");
            isThisObject = false;
        }
        else
        {
            string str = "";
            foreach (var item in childs)
            {
                str += " '" + item.name + "' ";
            }
            GUILayout.Label ("修改 "+ str + " 物体下的所有字体");
            isThisObject = true;
        }
        if (GUILayout.Button ("开始修改!"))
        {
            modifyFont ();
            GameObject go = new GameObject ();
            EditorUtility.SetDirty (go);
            DestroyImmediate ( go);//刷新场景更新字体
        }
        //GUILayout.Label ("\t╔════════════════╗");
        //GUILayout.Label ("\t║\t记得保存场景!\t   ║");
        //GUILayout.Label ("\t║\t记得保存场景!\t   ║");
        //GUILayout.Label ("\t╚════════════════╝");
    }
    public void modifyFont()
    {
        if (ModifyFontText)
        {
            if (isThisObject)
            {
                foreach (Transform transforms in childs)
                {
                    foreach (Transform childs in transforms.GetComponentsInChildren<Transform>(true))
                    {
                        modifyText (childs.gameObject);
                    }
                }
            }
            else
            {
                foreach (GameObject item in GetAllSceneObjectsWithInactive ())
                {
                    modifyText (item);
                }
            }
        }
    }
    void modifyText(GameObject obj)
    {
        if (obj.GetComponent<Text> ())
        {
            Debug.Log ("修改Text" + obj.name);
            obj.GetComponent<Text> ().font = ModifyFontText;
        }
        if (obj.GetComponent<TextMesh> ())
        {
            Debug.Log ("修改TextMesh" + obj.name);
            obj.GetComponent<TextMesh> ().font = ModifyFontText;
        }
    }

    private static List<GameObject> GetAllSceneObjectsWithInactive()
    {
        var allTransforms = Resources.FindObjectsOfTypeAll (typeof (Transform));
        var previousSelection = Selection.objects;
        Selection.objects = allTransforms.Cast<Transform> ()
            .Where (x => x != null)
            .Select (x => x.gameObject)
            //如果你只想获取所有在Hierarchy中被禁用的物体,反注释下面代码
            //.Where(x => x != null && !x.activeInHierarchy)
            .Cast<UnityEngine.Object> ().ToArray ();

        var selectedTransforms = Selection.GetTransforms (SelectionMode.Editable | SelectionMode.ExcludePrefab);
        Selection.objects = previousSelection;

        return selectedTransforms.Select (tr => tr.gameObject).ToList ();
    }

}

源码都粘出来了我看谁去下载了

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

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

相关文章

《微服务实战》 第二十五章 Java多线程安全与锁

前言 本章节介绍Java多线程安全与锁 1、Java多线程安全与锁 1.1、多线程安全问题 当多个线程同时操作同一个数据时&#xff0c;可能会出现数据不一样的情况&#xff0c;这就是线程安全问题。线程安全机制用于保证多个线程访问数据时的一致性. 1.2、线程安全问题三方面 原…

际华集团电子化采购平台建设之路及功能亮点

际华集团股份有限公司&#xff08;以下简称“际华集团”&#xff09;于2009年6月26日设立&#xff0c;并于2010年8月16日在上海证券交易所挂牌上市&#xff0c;旗下50余户全资及控股子公司&#xff0c;分布在全国23个省、直辖市、自治区以及欧洲、香港&#xff0c;资产规模超30…

让初学者读懂代码的入门书

经常有同学问&#xff0c;零基础想要学编程&#xff0c;应该先从哪门编程语言学起。 如果你学习编程是想要从事互联网技术岗位&#xff0c;那么对比众多的编程语言&#xff0c;Java作为目前使用率最高且应用领域最多的编程语言之一&#xff0c;从应用领域、生态及业内使用率上…

【016】C++预处理详解(内存分区、变量的存储、头文件、宏等)

C内存分区和变量存储 引言一、内存分区二、变量的存储2.1、普通局部变量2.2、普通全局变量2.3、静态局部变量2.4、静态全局变量 三、全局函数和静态函数3.1、全局函数3.2、静态函数&#xff08;static修饰的函数&#xff09; 四、头文件包含五、#define宏5.1、不带参数的宏5.2、…

chatgpt赋能python:Python中的不确定尾数问题

Python中的不确定尾数问题 Python作为一种高级编程语言&#xff0c;被广泛应用于数据科学、机器学习、Web开发等众多领域。然而&#xff0c;Python在处理浮点数时会出现一些不确定尾数的问题&#xff0c;给程序员和数据分析员带来不少麻烦。本篇文章将介绍Python中不确定尾数的…

抖音seo开源源码,抖音优化系统定制方案

抖音作为目前最火热的短视频平台之一&#xff0c;其在移动互联网领域的影响越来越大。然而&#xff0c;一款成功的产品未必仅仅靠着其自身的功能和品质就能获得市场的认可&#xff0c;还需要通过优化SEO来实现更好的曝光率。下面&#xff0c;本文将介绍如何优化抖音SEO源码开发…

16个好用到爆的Python实用技巧!

Python 是一门用途广泛的编程语言&#xff0c;它具有大量的库和框架。有一些鲜为人知的 Python 编码技巧和库可以让你作为开发人员的工作更为轻松&#xff0c;编写代码更高效。 本文将探讨一些鲜为人知的 Python 技巧&#xff0c;这些技巧非常有用&#xff0c;但并不广为人知。…

领域驱动模型VO,BO,PO,DO,DTO概念介绍和区别

先来一张图&#xff0c;有一个直观地感受&#xff1a; 概念介绍 VO&#xff08;View Object&#xff09;视图对象 用于展示层&#xff08;和控制层Controller共同属于表现层&#xff09;&#xff0c;它的作用是把某个指定页面&#xff08;或组件&#xff09;的所有数据封装起来…

机器学习算法

机器学习擅长的任务: ● 回归&#xff08;regression&#xff09; ● 分类&#xff08;classification&#xff09; ● 聚类&#xff08;clustering&#xff09; 1.回归&#xff08;regression&#xff09; 回归是处理连续数据时使用的方法&#xff0c;如时间序列数据。 …

vue使用obs华为云上传图片或者视频

可惜只支持web和h5 api链接 引入&#xff0c;位置自己放&#xff0c;我放了两个其实一个就可以 import ObsClient from "./../common/esdk-obs-browserjs-without-polyfill.3.23.5.min.js";使用 Bucket桶名&#xff1b;Key可以理解为参数&#xff1b;SourceFile文…

香豆素荧光标记652966-03-5,ATTO425 acid,ATTO 425 羧酸,进行简析说明

中文名称&#xff1a;ATTO 425 羧酸 英文名称&#xff1a;ATTO425 COOH&#xff0c;ATTO-425 carboxylic acid 规格标准&#xff1a;10mg&#xff0c;25mg&#xff0c;50mg CAS&#xff1a;652966-03-5 分子式&#xff1a;C22H27NO6 分子量&#xff1a;401.46结构式&#xff1a…

90.qt qml-Table表格组件(支持表头表尾固定/自定义颜色/自定义操作按钮/插入排序)

众所周知,qml table在目前版本还很废,qt5的table完全就没法用,在之前章节就写过: 88.qt qml-TableView学习(一)_诺谦的博客-CSDN博客 所以本章便参考VUE-Element的Table外观组件实现一个可排序可操作的Table组件. 1.组件介绍 GIF如下所示: 排序支持数字和字符串排序。 …

Mysql5.7.41windows安装

Mysql5.7.41windows安装 Mysql5.7.41windows安装Mysql5.7.41官方下载mysql安装 配置PATH路径&#xff0c;任意位置打开cmd都可以连接Mysql环境验证&#xff0c;并登录友情链接 Mysql5.7.41windows安装 本文主要完成windows从下载到安装的安装文档撰写。 Mysql5.7.41官方下载 …

html实现会拐弯的时间线,jquery实现会拐弯的时间线,css实现会拐弯的时间线

前言 jquery html css实现一个会拐弯的时间线 基于此网址整改&#xff0c;参考&#xff1a;https://www.jq22.com/webqd5873 效果 实现 基于jQuery&#xff0c;需要引入jQuery.js&#xff0c;没有必要使用太高版本&#xff0c;够用就行 jquery下载&#xff1a;https://www…

SadTalker 学习笔记

SadTalker: Learning Realistic 3D Motion Coefficients for Stylized Audio-Driven Single Image Talking Face Animation 摘要 Generating talking head videos through a face image and a piece ofspeech audio still contains many challenges. i.e., unnatural head mo…

前端页面调用EXE应用程序

文章目录 1️⃣ 操作步骤1.1 操作注册表1.1.1 创建 xcLeigh.reg 注册表文件1.1.2 安装 xcLeigh.reg 注册表文件1.1.3 放入EXE文件 1.2 界面代码1.3 运行效果 优质资源分享 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details…

大专毕业,从6个月开发转入测试岗位的一些感悟 —— 写在测试岗位3年之际

时光飞逝&#xff0c;我从前端开发岗位转入测试岗位已经三年了&#xff0c;这期间从迷茫到熟悉&#xff0c;到强化&#xff0c;到熟练&#xff0c;到总结&#xff0c;感受还是很深的&#xff01; 三年前的某一个晚上&#xff0c;我正准备下班回家&#xff0c;我们的项目经理把…

嵌入式Linux中的 gpio、gpiod基本分析

GPIO 应该是每个嵌入式设备都避免不了的。最近在做项目的时候&#xff0c;也遇到这方面的问题&#xff0c;所以简单总结一下。 现在内核里面多了 gpiod 的来控制 gpio 口&#xff0c;相对于原来的形式&#xff0c;使用 gpiod 的好处是我们申请后不进行 free 也没有什么问题。但…

Seata分布式事务AT、TCC、SAGA、XA模式

Seata是一款开源的分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。Seata将为用户提供了AT、TCC、SAGA和XA事务模式&#xff0c;为用户打造一站式的分布式解决方案。 AT模式 &#x1f36e;实现原理 阿里SEATA独有模式&#xff0c;通过生成反向SQ…

STM32读取24位模数转换(24bit ADC)芯片ADS1231数据

STM32读取24位模数转换&#xff08;24bit ADC&#xff09;芯片ADS1231数据 ADS1231是一款TI公司出品的24位ADC芯片&#xff0c;常用于与称重传感器配合实现体重计的应用。这里介绍STM32读取ADS1231的电路和代码实现。ADS1231的特点为通过硬件管脚可控制两种采样速率&#xff0…