「Unity/EditorWindow/TextMeshProUGUIのAutoSizeをonに変更」の版間の差分
ナビゲーションに移動
検索に移動
ページの作成:「==TextMeshProUGUIのAutoSizeをonに変更するツール== <pre> using UnityEditor; using UnityEngine; using UnityEditor.SceneManagement; using UnityEngine.SceneManageme...」 |
|||
| 1行目: | 1行目: | ||
==TextMeshProUGUIのAutoSizeをonに変更するツール== | ==TextMeshProUGUIのAutoSizeをonに変更するツール== | ||
全てのシーンのTextMeshProUGUIのAutoSizeをonに変更するツールで、 | |||
現在のFontSizeをMaxサイズにし、Maxの1/10をMinサイズとする。Minの小数点以下は切り捨てる。 | |||
<pre> | <pre> | ||
using UnityEditor; | using UnityEditor; | ||
2024年9月21日 (土) 23:02時点における版
TextMeshProUGUIのAutoSizeをonに変更するツール
全てのシーンのTextMeshProUGUIのAutoSizeをonに変更するツールで、 現在のFontSizeをMaxサイズにし、Maxの1/10をMinサイズとする。Minの小数点以下は切り捨てる。
using UnityEditor;
using UnityEngine;
using UnityEditor.SceneManagement;
using UnityEngine.SceneManagement;
using TMPro;
using System.IO;
public class ReplaceTextAutoSize : EditorWindow
{
private string directoryPath = "Assets/Scenes"; // シーンのデフォルトパス
[MenuItem("Tools/AutoSize TextMeshProUGUI")]
public static void ShowWindow()
{
GetWindow<ReplaceTextAutoSize>("AutoSize TextMeshProUGUI");
}
private void OnGUI()
{
GUILayout.Label("Directory Settings", EditorStyles.boldLabel);
directoryPath = EditorGUILayout.TextField("Directory Path", directoryPath);
if (GUILayout.Button("Enable AutoSize in Scenes"))
{
EnableAutoSizeInScenes();
}
}
private void EnableAutoSizeInScenes()
{
if (string.IsNullOrEmpty(directoryPath))
{
Debug.LogError("Please specify the directory path.");
return;
}
// 現在のシーンを保存し、そのパスを記録
Scene currentScene = EditorSceneManager.GetActiveScene();
string currentScenePath = currentScene.path;
if (currentScene.isDirty)
{
EditorSceneManager.SaveScene(currentScene);
}
// ディレクトリ内のすべてのシーンファイルを取得
string[] sceneFiles = Directory.GetFiles(directoryPath, "*.unity", SearchOption.AllDirectories);
foreach (string scenePath in sceneFiles)
{
// シーンを開く
Scene scene = EditorSceneManager.OpenScene(scenePath);
if (!scene.IsValid())
{
Debug.LogError($"Invalid scene path: {scenePath}");
continue;
}
// シーン内のすべての TextMeshProUGUI オブジェクトを探す
TextMeshProUGUI[] textMeshObjects = GameObject.FindObjectsOfType<TextMeshProUGUI>();
foreach (var textMesh in textMeshObjects)
{
// AutoSize を有効にし、最大サイズを設定
textMesh.enableAutoSizing = true;
textMesh.fontSizeMax = textMesh.fontSize; // 現在のフォントサイズを最大値に設定
// 最小サイズを最大サイズの1/10に設定(整数に丸める)
textMesh.fontSizeMin = Mathf.RoundToInt(textMesh.fontSizeMax / 10);
Debug.Log($"Enabled AutoSize on: {textMesh.gameObject.name} in scene: {scenePath} with max size: {textMesh.fontSizeMax} and min size: {textMesh.fontSizeMin}");
}
// シーンをダーティーにして保存
EditorSceneManager.MarkSceneDirty(scene);
EditorSceneManager.SaveScene(scene);
}
// 最後に元のシーンを再度開く
if (!string.IsNullOrEmpty(currentScenePath))
{
EditorSceneManager.OpenScene(currentScenePath);
}
Debug.Log("Finished enabling AutoSize for TextMeshProUGUI in all scenes.");
}
}