当前位置: 首页 > news >正文

Unity提取场景中的静态文本

有些单机项目开发的时候没有做本地文本配置文件,全部写死在场景的对象上面,简单记录一下怎么提取场景里面的文本并且写入到配置文件里面

using System.Collections.Generic;

using System.IO;

using TMPro;

using UnityEditor;

using UnityEngine;

using UnityEngine.UI;

public class Test : MonoBehaviour

{

static List<string> txtArray = new List<string>();

static string labelStr = "_config_Label_";

[MenuItem("Tools/ÌáÈ¡Îı¾")]

static void GetAllSceneObjectsWithInactive()

{

ReadFile();

var allGos = Resources.FindObjectsOfTypeAll(typeof(GameObject));

var previousSelection = Selection.objects;

Selection.objects = allGos;

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

Selection.objects = previousSelection;

int index = 0;

foreach (var trans in selectedTransforms)

{

Text text = trans.GetComponent<Text>();

string textContent = "";

if (text == null)

{

TextMeshProUGUI textMeshPro = trans.GetComponent<TextMeshProUGUI>();

if (textMeshPro != null)

{

textContent = textMeshPro.text;

}

}

else

{

textContent = text.text;

}

if (!string.IsNullOrEmpty(textContent)&&!trans.name.Contains("LiberationSans SDF Atlas"))

{

UILanguageText uILanguageText= trans.gameObject.AddComponent<UILanguageText>();

index = index + 1;

string content = "";

if (textContent.Contains("\n"))

{

string[] temp = textContent.Split('\n');

for (int i = 0; i < temp.Length; i++)

{

if (i< temp.Length -1)

{

content = content + temp[i] + "\\n";

}

else

{

content = content + temp[i];

}

}

}

else

{

content = textContent;

}

string languageKey = string.Format("{0}{1}{2}", trans.name, labelStr, index);

uILanguageText.languageKey = languageKey;

txtArray.Add(string.Format("{0},{1}", languageKey, content));

Debug.Log(trans.name+":::"+ textContent);

}

}

WriteFile();

Debug.Log("ÌáÈ¡½áÊø");

}

static void WriteFile()

{

File.WriteAllLines(Application.dataPath + "/Resources/Language/CN.txt", txtArray);

}

static void ReadFile()

{

txtArray.Clear();

string[] strs = File.ReadAllLines(Application.dataPath + "/Resources/Language/CN.txt");

for (int i = 0; i < strs.Length; i++)

{

txtArray.Add(strs[i]);

}

}

}

相关文章:

Unity提取场景中的静态文本

有些单机项目开发的时候没有做本地文本配置文件&#xff0c;全部写死在场景的对象上面&#xff0c;简单记录一下怎么提取场景里面的文本并且写入到配置文件里面using System.Collections.Generic;using System.IO;using TMPro;using UnityEditor;using UnityEngine;using Unity…...

Netty常用核心类说明

MessageToByteEncoder MessageToByteEncoder是一个抽象编码器&#xff0c;子类可重写encode方法把对象编码为ByteBuf输出。 MessageToByteEncoder继承自ChannelOutboundHandlerAdapter&#xff0c;encode在出站是被调用。 public class MyMessageEncoder extends MessageToB…...

ingress服务

user.default.svc.cluster.local是集群内部service的dns地址&#xff0c;集群外部想访问集群里面的service&#xff0c;可以通过LoadBalaner和NodePort。LoadBalaner可以获得一个公网ip&#xff1b;NodePort在宿主机上开一个端口&#xff0c;访问这个端口会把报文实际的转发到集…...

java 抽象类 详解

目录 一、抽象类概述&#xff1a; 二、抽象方法 : 1.概述 : 2.应用 : 3.特点 : 三、抽象类特点 : 1.关于abstract关键字 : 2.抽象类不能被实例化&#xff0c;只能创建其子类对象 : 3.抽象类子类的两个选择 &#xff1a; 四、抽象类的成员 : 1.成员变量 : 2.成员方…...

MySQL的安装(详解)

文章目录前言一、yum方式安装1、下载并安装MySQL2、 启动MySQL数据库3、查看MySQL初始密码4、登录数据库5、修改MySQL默认密码6、授予root用户远程管理权限7、输入exit退出数据库二、rpm安装方式1、检查2、卸载mariadb3、安装4、启动5、密码总结前言 本教程为Linux下安装mysql的…...

界面控件DevExpress WinForm——轻松构建类Visual Studio UI(二)

DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜任…...

BabylonJS之放烟花

一&#xff1a; 技术调研 1. 方案一&#xff1a;ParticleSystem 用ParticleSystem来实现每一束的烟花效果&#xff0c;如果浏览器支持WebGL2功能&#xff0c;使用GPUParticleSystem性能会有极大的提升。 优点&#xff1a; 烟花效果易实现且效果好。 缺点&#xff1a; 每一个P…...

vue3 布局样式的原理

style scoped <style scoped > 它的 CSS 只作用于当前组件中的元素&#xff0c;如果子组件只有一个根元素&#xff0c;也会被渗透 原理&#xff1a; 当我们再组建中使用scoped时&#xff0c;vue会自动为组件中所有元素生成一个随机的属性&#xff0c;形如&#xff1a;da…...

Qt程序使用路径方式和注意事项

Qt程序使用路径方式和注意事项 更多精彩内容&#x1f449;个人内容分类汇总 &#x1f448;&#x1f449;Qt开发经验 &#x1f448;文章目录Qt程序使用路径方式和注意事项[toc]前言一、Windows下Qt程序使用路径1.准备工作2.测试结果二、Linux下Qt程序使用路径1.准备工作2.测试结…...

和日期相关的代码和bug——一道力扣题中的小发现

目录 Day of the Week 题目大意 常规方法 Python代码 Golang代码 C代码 基姆拉尔森公式 Python代码 Golang代码 C代码 使用库函数 Python代码 Golang代码 C代码 Day of the Week Given a date, return the corresponding day of the week for that date. The inp…...

如何在2023年学习编程并获得开发者工作

丢下自负 许多进入软件开发领域的人都是从最底层开始的&#xff0c;你可能会获得“初级开发者”的头衔。每天面临的问题是&#xff1a;我有十年的专业经验了。我不是个入门员工。但尽管过去的工作经验丰富&#xff0c;我仍然是个入门级的开发者&#xff0c;我还是个新手。别总…...

Python实战之小说下载神器(三)排行榜所有小说:最全热门小说合集,总有一款适合你,好多好多好多超赞的小说...(源码分享学习)

前言 这次的是一个系列内容 给大家讲解一下何一步一步实现一个完整的实战项目案例系列之 小说下载神器&#xff08;三&#xff09;&#xff08;GUI界面化程序&#xff09; 多线程采集小说下载、采集排行榜所有小说 哈喽&#xff01;大家上午好啦&#xff0c;我是爱看小说的栗子…...

前端监控之用户行为监控实践1(数据收集)

前文对前端监控进行了简单介绍&#xff0c;起因是因为当前做的一个需求&#xff0c;老板要看当前项目的uv、pv信息。其实这是非常简单的统计。 但在最开始接到这个需求&#xff0c;却难倒我了。 现在进行简单的复盘&#xff0c;记录一下实现方法。 一、数据记录 用户行为从大…...

【网络原理7】认识HTTP

目录 一、HTTP协议的位置 二、HTTP协议的特点&应用场景 三、HTTP协议的格式的查看 Fiddler下载与使用 ​编辑 如何查看HTTP请求消息 ​编辑 如何查看HTTP响应数据包 如何默认开启HTTPS的解析功能 四、HTTP的请求数据包的格式含义 第一部分&#xff1a;请求行&…...

SPI实验

目录 一、SPI 简介 二、硬件原理 ECSPI3_SCLK ECSPI3_MISO和ECSPI3_MOSI ECSPI3_SS0 三、I.MX6U ECSPI 简介 ECSPIx_RXDATA ECSPIx_TXDATA ECSPIx_CONREG ECSPIx_CONFIGREG ECSPIx_PERIODREG​编辑 ECSPIx_STATREG 四、ICM-20608 简介 五、代码编写 1、创建文件及文…...

去基线处理

目录detrend函数去除基线多项式拟合原函数BEADS 基线处理小波算法经验模态分解&#xff08;EMD&#xff09;参考detrend函数去除基线 detrend函数只能用于去除线性趋势&#xff0c;对于非线性的无能为力。 函数表达式&#xff1a;y scipy.signal.detrend(x): 从信号中删除线…...

模拟信号4-20mA /0-5V/0-75mV/0-100mV转RS-485/232,数据采集A/D转换模块 YL21

特点&#xff1a;● 模拟信号采集&#xff0c;隔离转换 RS-485/232输出● 采用12位AD转换器&#xff0c;测量精度优于0.1%● 通过RS-485/232接口可以程控校准模块精度● 信号输入 / 输出之间隔离耐压3000VDC ● 宽电源供电范围&#xff1a;8 ~ 32VDC● 可靠性高&#xff0c;编程…...

[USB]键盘数据格式以及按键键值

USB键盘数据包含8个字节 BYTE1 – 特殊按键 |–bit0: Left Control是否按下&#xff0c;按下为1 |–bit1: Left Shift 是否按下&#xff0c;按下为1 |–bit2: Left Alt 是否按下&#xff0c;按下为1 |–bit3: Left GUI&#xff08;Windows键&#xff09; 是否按下&#xff0c;…...

web客户端-websocket

1、websocket简介 WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。 WebSocket使得客户端和服务器之间的数据交换变得更加简单&#xff0c;允许服务端主动向客户端推送数据。在WebSocket API中&#xff0c;浏览器和服务器只需要完成一次握手&#xff0c…...

mysql间隙锁

首先我们这里有一个表t&#xff0c;其中的数据如下图所示 注意哈 update由于操作的最新的值&#xff0c;所以是当前读&#xff01; 另外一个事务插入 8的时候发生锁 而我对id为10的数据进行更新&#xff0c;却不会被锁住 分析&#xff1a;在执行当前读时&#xff0c;由于id7不存…...

REFramework终极指南:让RE引擎游戏体验焕然一新的完整解决方案

REFramework终极指南&#xff1a;让RE引擎游戏体验焕然一新的完整解决方案 【免费下载链接】REFramework Mod loader, scripting platform, and VR support for all RE Engine games 项目地址: https://gitcode.com/GitHub_Trending/re/REFramework REFramework是专为RE…...

霍里思特获2亿融资,矿业分选新势力崛起?

硬氪消息&#xff0c;矿石AI智能分选设备企业霍里思特完成近2亿元C轮融资&#xff0c;由招商局资本领投。该公司技术实力强&#xff0c;产品优势明显&#xff0c;市场表现佳&#xff0c;未来发展值得关注。融资情况与用途霍里思特完成近2亿元C轮融资&#xff0c;由招商局资本领…...

避坑指南:ZYNQ lwIP Socket TCP服务器开发中,DHCP超时、内存泄漏和任务卡死的调试经验

ZYNQ lwIP TCP服务器开发实战&#xff1a;从实验室到工业环境的稳定性优化 在嵌入式网络开发中&#xff0c;ZYNQ平台结合lwIP协议栈的TCP服务器实现看似简单&#xff0c;但当代码从实验室走向真实工业环境时&#xff0c;开发者往往会遭遇一系列"幽灵问题"——DHCP获取…...

保姆级教程:Qwen3-TTS-Tokenizer-12Hz快速入门,小白也能玩转音频压缩

保姆级教程&#xff1a;Qwen3-TTS-Tokenizer-12Hz快速入门&#xff0c;小白也能玩转音频压缩 1. 音频压缩新选择&#xff1a;为什么你需要了解Qwen3-TTS-Tokenizer 想象一下&#xff0c;你有一段30秒的语音消息&#xff0c;原始文件大小约480KB。如果能把它压缩到不到1KB&…...

Qwen3-ASR-0.6B模型监控:Prometheus指标采集

Qwen3-ASR-0.6B模型监控&#xff1a;Prometheus指标采集 1. 引言 当你把Qwen3-ASR-0.6B语音识别模型部署到生产环境后&#xff0c;最让人头疼的问题就是&#xff1a;我怎么知道它现在运行得好不好&#xff1f;GPU使用率是不是正常&#xff1f;推理延迟有没有超标&#xff1f;…...

STM32定时器编码器模式:从ARR寄存器到精准测速的实战解析

1. STM32编码器模式基础认知 第一次接触STM32的编码器接口时&#xff0c;我完全被那些专业术语搞懵了。什么正交解码、自动重装值、计数方向&#xff0c;听起来就像天书。但当我真正用起来才发现&#xff0c;这玩意儿简直就是为电机测速量身定做的神器。 编码器模式本质上就是定…...

OpenClaw多模型切换:Qwen3-32B与其他镜像的混合调度方案

OpenClaw多模型切换&#xff1a;Qwen3-32B与其他镜像的混合调度方案 1. 为什么需要多模型切换&#xff1f; 去年冬天&#xff0c;当我第一次尝试用OpenClaw自动化处理技术文档时&#xff0c;遇到了一个尴尬的问题&#xff1a;用同一个模型处理代码生成和内容润色&#xff0c;…...

智能家居中枢:OpenClaw桥接Qwen3.5-9B实现语音控制图片检索

智能家居中枢&#xff1a;OpenClaw桥接Qwen3.5-9B实现语音控制图片检索 1. 为什么需要智能家居中的图片检索 每次家庭聚会后整理照片都让我头疼。手机相册里堆积着上千张照片&#xff0c;当亲友们围坐在客厅想回顾某次旅行时&#xff0c;"找那张在雪山前跳起来的合影&qu…...

Pop 核心架构解析:深入理解 Bubble Tea 框架与邮件发送原理

Pop 核心架构解析&#xff1a;深入理解 Bubble Tea 框架与邮件发送原理 【免费下载链接】pop Send emails from your terminal &#x1f4ec; 项目地址: https://gitcode.com/gh_mirrors/pop2/pop 想要在终端中优雅地发送邮件吗&#xff1f;Pop 是一个基于 Go 语言开发的…...

用rosbags工具5分钟搞定ROS1/ROS2数据包转换(含自定义消息处理技巧)

5分钟极速转换ROS1/ROS2数据包&#xff1a;rosbags工具高阶实战指南 在机器人开发领域&#xff0c;数据包的兼容性问题一直是开发者面临的痛点。当我们需要在ROS1和ROS2之间迁移项目时&#xff0c;传统方法往往需要复杂的桥接配置和漫长的等待时间。今天要介绍的rosbags工具&am…...