想要批量化是否勾选项目预制体资源中Text组件BestFit属性(此篇教程也可以操作其他组件的属性,只不过需要修改其中对应的代码),可以采用以下步骤。
1、在项目的Editor文件中,新建一个名为TextBestFitBatchProcessor的C#脚本文件,然后把以下代码复制粘贴到新建的TextBestFitBatchProcessor的C#脚本文件中。
using UnityEngine;
using UnityEditor;
using UnityEngine.UI;
using System.IO;
public class TextBestFitBatchProcessor : EditorWindow // 创建一个继承自 EditorWindow 的类
{
[MenuItem("Tools/Batch Process Text Best Fit")] // 在 Unity 编辑器菜单中创建一个名为 "Batch Process Text Best Fit" 的选项
public static void ProcessTextBestFit() // 定义一个公共静态方法,用于处理文本最适合批处理
{
string[] prefabGuids = AssetDatabase.FindAssets("t:prefab", new[] { "Assets" }); // 获取 Assets 目录下的所有预制体的 GUID
foreach (string prefabGuid in prefabGuids) // 遍历每个预制体的 GUID
{
string prefabPath = AssetDatabase.GUIDToAssetPath(prefabGuid); // 获取预制体的路径
GameObject prefabObject = AssetDatabase.LoadAssetAtPath<GameObject>(prefabPath); // 加载预制体对象
Text[] textComponents = prefabObject.GetComponentsInChildren<Text>(true); // 获取预制体中所有的 Text 组件,包括子对象
foreach (Text textComponent in textComponents) // 遍历每个 Text 组件
{
textComponent.resizeTextForBestFit = true; // 将 Text 组件的 Best Fit 属性设置为 true
}
EditorUtility.SetDirty(prefabObject); // 标记预制体对象为脏,以便保存更改
}
AssetDatabase.SaveAssets(); // 保存所有更改的资产
Debug.Log("Batch Process Text Best Fit Completed!"); // 在控制台打印批处理完成的消息
}
}