modify scripts

This commit is contained in:
2025-10-17 09:14:59 +08:00
parent 0da10d3e7c
commit 9336ed0d6f
20 changed files with 778 additions and 24 deletions

View File

@ -23,71 +23,71 @@ namespace WordsToolkit.Scripts.Editor
public static string WordConnect = "WordConnect";
private static string WordConnectPath = "Assets/WordConnectGameToolkit";
[MenuItem( nameof(WordConnect) + "/Settings/Shop settings")]
[MenuItem(nameof(WordConnect) + "/Settings/Shop settings")]
public static void IAPProducts()
{
Selection.activeObject = AssetDatabase.LoadMainAssetAtPath(WordConnectPath + "/Resources/Settings/CoinsShopSettings.asset");
}
[MenuItem( nameof(WordConnect) + "/Settings/Ads settings")]
[MenuItem(nameof(WordConnect) + "/Settings/Ads settings")]
public static void AdsSettings()
{
Selection.activeObject = AssetDatabase.LoadMainAssetAtPath(WordConnectPath + "/Resources/Settings/AdsSettings.asset");
}
//DailyBonusSettings
[MenuItem( nameof(WordConnect) + "/Settings/Daily bonus settings")]
[MenuItem(nameof(WordConnect) + "/Settings/Daily bonus settings")]
public static void DailyBonusSettings()
{
Selection.activeObject = AssetDatabase.LoadMainAssetAtPath(WordConnectPath + "/Resources/Settings/DailyBonusSettings.asset");
}
//GameSettings
[MenuItem( nameof(WordConnect) + "/Settings/Game settings")]
[MenuItem(nameof(WordConnect) + "/Settings/Game settings")]
public static void GameSettings()
{
Selection.activeObject = AssetDatabase.LoadMainAssetAtPath(WordConnectPath + "/Resources/Settings/GameSettings.asset");
}
//SpinSettings
[MenuItem( nameof(WordConnect) + "/Settings/Spin settings")]
[MenuItem(nameof(WordConnect) + "/Settings/Spin settings")]
public static void SpinSettings()
{
Selection.activeObject = AssetDatabase.LoadMainAssetAtPath(WordConnectPath + "/Resources/Settings/SpinSettings.asset");
}
//DebugSettings
[MenuItem( nameof(WordConnect) + "/Settings/Debug settings")]
[MenuItem(nameof(WordConnect) + "/Settings/Debug settings")]
public static void DebugSettings()
{
Selection.activeObject = AssetDatabase.LoadMainAssetAtPath(WordConnectPath + "/Resources/Settings/DebugSettings.asset");
}
[MenuItem( nameof(WordConnect) + "/Settings/Crossword config")]
[MenuItem(nameof(WordConnect) + "/Settings/Crossword config")]
public static void CrosswordConfig()
{
Selection.activeObject = AssetDatabase.LoadMainAssetAtPath(WordConnectPath + "/Resources/Settings/CrosswordConfig.asset");
}
[MenuItem( nameof(WordConnect) + "/Settings/Tutorial settings")]
[MenuItem(nameof(WordConnect) + "/Settings/Tutorial settings")]
public static void TutorialSettings()
{
Selection.activeObject = AssetDatabase.LoadMainAssetAtPath(WordConnectPath + "/Resources/Settings/TutorialSettings.asset");
}
[MenuItem( nameof(WordConnect) + "/Settings/Language configuration")]
[MenuItem(nameof(WordConnect) + "/Settings/Language configuration")]
public static void LanguageConfiguration()
{
Selection.activeObject = AssetDatabase.LoadMainAssetAtPath(WordConnectPath + "/Resources/Settings/LanguageConfiguration.asset");
}
[MenuItem( nameof(WordConnect) + "/Settings/Gift settings")]
[MenuItem(nameof(WordConnect) + "/Settings/Gift settings")]
public static void GiftSettings()
{
Selection.activeObject = AssetDatabase.LoadMainAssetAtPath(WordConnectPath + "/Resources/Settings/GiftSettings.asset");
}
[MenuItem( nameof(WordConnect) + "/Scenes/Main scene &1", priority = 0)]
[MenuItem(nameof(WordConnect) + "/Scenes/Main scene &1", priority = 0)]
public static void MainScene()
{
EditorSceneManager.OpenScene(WordConnectPath + "/Scenes/main.unity");
@ -99,7 +99,7 @@ namespace WordsToolkit.Scripts.Editor
EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
}
[MenuItem( nameof(WordConnect) + "/Scenes/Game scene &2")]
[MenuItem(nameof(WordConnect) + "/Scenes/Game scene &2")]
public static void GameScene()
{
var stateManager = Object.FindObjectOfType<StateManager>();
@ -107,7 +107,7 @@ namespace WordsToolkit.Scripts.Editor
EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
}
[MenuItem( nameof(WordConnect) + "/Editor/Tile editor", priority = 1)]
[MenuItem(nameof(WordConnect) + "/Editor/Tile editor", priority = 1)]
public static void ColorEditor()
{
string folderPath = WordConnectPath + "/Resources/ColorsTile";
@ -130,37 +130,44 @@ namespace WordsToolkit.Scripts.Editor
EditorGUIUtility.PingObject(tileAsset);
}
[MenuItem( nameof(WordConnect) + "/Documentation/Main", priority = 2)]
[MenuItem(nameof(WordConnect) + "/Documentation/Main", priority = 2)]
public static void MainDoc()
{
Application.OpenURL("https://candy-smith.gitbook.io/main");
}
[MenuItem( nameof(WordConnect) + "/Documentation/ADS/Setup ads")]
[MenuItem(nameof(WordConnect) + "/Documentation/ADS/Setup ads")]
public static void UnityadsDoc()
{
Application.OpenURL("https://candy-smith.gitbook.io/bubble-shooter-toolkit/tutorials/ads-setup/");
}
[MenuItem( nameof(WordConnect) + "/Documentation/Unity IAP (in-apps)")]
[MenuItem(nameof(WordConnect) + "/Documentation/Unity IAP (in-apps)")]
public static void Inapp()
{
Application.OpenURL("https://candy-smith.gitbook.io/main/block-puzzle-game-toolkit/setting-up-in-app-purchase-products");
}
[MenuItem( nameof(WordConnect) + "/NLP/Training Language Model")]
[MenuItem(nameof(WordConnect) + "/NLP/Training Language Model")]
public static void TrainingModel()
{
Application.OpenURL("https://colab.research.google.com/drive/199zNcB3FPfnrD6E7OiwmwCcf27jMnY1b?usp=sharing");
}
[MenuItem( nameof(WordConnect) + "/Reset PlayerPrefs &e")]
[MenuItem(nameof(WordConnect) + "/Reset PlayerPrefs &e")]
private static void ResetPlayerPrefs()
{
GameDataManager.ClearALlData();
PlayerPrefs.DeleteKey("GameState");
Debug.Log("PlayerPrefs are reset");
}
// 🔥 新增菜单项,打开 PrefabBatchViewer 窗口
[MenuItem(nameof(WordConnect) + "/Settings/Prefab Batch Viewer")]
public static void OpenPrefabBatchViewer()
{
PopupPreview.ShowWindow();
}
}
}

View File

@ -0,0 +1,93 @@
using UnityEditor;
using UnityEngine;
using System.IO;
using System.Linq;
public class PopupPreview : EditorWindow
{
private GameObject[] prefabs;
private int currentIndex = 0;
private GameObject currentInstance;
[MenuItem("Tools/Prefab Batch Viewer")]
public static void ShowWindow()
{
GetWindow<PopupPreview>("Prefab Batch Viewer");
}
private void OnEnable()
{
string path = "Assets/WordConnectGameToolkit/Resources/Popups";
string[] prefabPaths = Directory.GetFiles(path, "*.prefab", SearchOption.AllDirectories);
prefabs = prefabPaths
.Select(p => AssetDatabase.LoadAssetAtPath<GameObject>(p))
.Where(p => p != null)
.ToArray();
}
private void OnGUI()
{
if (prefabs == null || prefabs.Length == 0)
{
EditorGUILayout.LabelField("No prefabs found in Resources/Popups.");
return;
}
EditorGUILayout.LabelField($"Prefab {currentIndex + 1}/{prefabs.Length}", EditorStyles.boldLabel);
EditorGUILayout.ObjectField("Current Prefab", prefabs[currentIndex], typeof(GameObject), false);
GUILayout.Space(10);
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("Previous"))
{
ShowPreviousPrefab();
}
if (GUILayout.Button("Next"))
{
ShowNextPrefab();
}
EditorGUILayout.EndHorizontal();
GUILayout.Space(10);
if (currentInstance == null)
{
if (GUILayout.Button("Instantiate in Scene"))
{
InstantiateCurrentPrefab();
}
}
else
{
if (GUILayout.Button("Remove Instance"))
{
DestroyImmediate(currentInstance);
}
}
}
private void ShowPreviousPrefab()
{
currentIndex = (currentIndex - 1 + prefabs.Length) % prefabs.Length;
InstantiateCurrentPrefab();
}
private void ShowNextPrefab()
{
currentIndex = (currentIndex + 1) % prefabs.Length;
InstantiateCurrentPrefab();
}
private void InstantiateCurrentPrefab()
{
if (currentInstance != null)
{
DestroyImmediate(currentInstance);
}
currentInstance = (GameObject)PrefabUtility.InstantiatePrefab(prefabs[currentIndex]);
currentInstance.name = prefabs[currentIndex].name + "_Preview";
Selection.activeGameObject = currentInstance;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 599a70f1dde3c4f8b879a52397f2416e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: