
1.导入URP
2.配置了URP
3.导入Dotween
4.导入Odin
5.导入了InputSystem
6.设置项目为新旧输入系统并用
7.导入了FunGus
8.创建了一些空文件夹
我是每日提醒上班小助手,今天你上班了吗?😺
130 lines
4.4 KiB
C#
130 lines
4.4 KiB
C#
// This code is part of the Fungus library (https://github.com/snozbot/fungus)
|
||
// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE)
|
||
|
||
using UnityEngine;
|
||
using UnityEditor;
|
||
using System.IO;
|
||
|
||
namespace Fungus
|
||
{
|
||
public class MenuItems
|
||
{
|
||
[MenuItem("Tools/Fungus/Create/Lua", false, 2000)]
|
||
static void CreateLua()
|
||
{
|
||
SpawnPrefab("Prefabs/Lua", false);
|
||
}
|
||
|
||
[MenuItem("Tools/Fungus/Create/Lua File", false, 2001)]
|
||
static void CreateLuaFile()
|
||
{
|
||
string path = EditorUtility.SaveFilePanelInProject("Create Lua File", "script.txt", "txt", "Please select a file name for the new Lua script. Note: Lua files in Unity use the .txt extension.");
|
||
if(path.Length == 0)
|
||
{
|
||
return;
|
||
}
|
||
|
||
File.WriteAllText(path, "");
|
||
AssetDatabase.Refresh();
|
||
|
||
#if UNITY_5_3_OR_NEWER
|
||
Object asset = AssetDatabase.LoadAssetAtPath<Object>(path);
|
||
#else
|
||
Object asset = AssetDatabase.LoadAssetAtPath(path, typeof(Object));
|
||
#endif
|
||
if (asset != null)
|
||
{
|
||
EditorUtility.FocusProjectWindow();
|
||
EditorGUIUtility.PingObject(asset);
|
||
}
|
||
}
|
||
|
||
[MenuItem("Tools/Fungus/Create/Lua Environment", false, 2100)]
|
||
static void CreateLuaEnvironment()
|
||
{
|
||
SpawnPrefab("Prefabs/LuaEnvironment", false);
|
||
}
|
||
|
||
[MenuItem("Tools/Fungus/Create/Lua Bindings", false, 2101)]
|
||
static void CreateLuaBindings()
|
||
{
|
||
SpawnPrefab("Prefabs/LuaBindings", false);
|
||
}
|
||
|
||
[MenuItem("Tools/Fungus/Create/Lua Script", false, 2102)]
|
||
static void CreateLuaScript()
|
||
{
|
||
SpawnPrefab("Prefabs/LuaScript", false);
|
||
}
|
||
|
||
[MenuItem("Tools/Fungus/Create/Lua Store", false, 2103)]
|
||
static void CreateLuaStore()
|
||
{
|
||
SpawnPrefab("Prefabs/LuaStore", false);
|
||
}
|
||
|
||
/// <summary>
|
||
/// Spawns a prefab in the scene based on it's filename in a Resources folder in the project.
|
||
/// If centerInScene is true then the object will be placed centered in the view window with z = 0.
|
||
/// If centerInScene is false the the object will be placed at (0,0,0)
|
||
/// </summary>
|
||
public static GameObject SpawnPrefab(string prefabName, bool centerInScene)
|
||
{
|
||
GameObject prefab = Resources.Load<GameObject>(prefabName);
|
||
if (prefab == null)
|
||
{
|
||
return null;
|
||
}
|
||
|
||
GameObject go = PrefabUtility.InstantiatePrefab(prefab) as GameObject;
|
||
#if UNITY_2018_4_OR_NEWER
|
||
PrefabUtility.UnpackPrefabInstance(go, PrefabUnpackMode.Completely, InteractionMode.AutomatedAction);
|
||
#else
|
||
PrefabUtility.DisconnectPrefabInstance(go);
|
||
#endif
|
||
|
||
if (centerInScene)
|
||
{
|
||
SceneView view = SceneView.lastActiveSceneView;
|
||
if (view != null)
|
||
{
|
||
Camera sceneCam = view.camera;
|
||
Vector3 pos = sceneCam.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, 10f));
|
||
pos.z = 0f;
|
||
go.transform.position = pos;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
go.transform.position = Vector3.zero;
|
||
}
|
||
|
||
Selection.activeGameObject = go;
|
||
|
||
Undo.RegisterCreatedObjectUndo(go, "Create Object");
|
||
|
||
return go;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Create new asset from <see cref="ScriptableObject"/> type with unique name at
|
||
/// selected folder in project window. Asset creation can be cancelled by pressing
|
||
/// escape key when asset is initially being named.
|
||
/// </summary>
|
||
/// <typeparam name="T">Type of scriptable object.</typeparam>
|
||
public static void CreateAsset<T>() where T : ScriptableObject {
|
||
var asset = ScriptableObject.CreateInstance<T>();
|
||
ProjectWindowUtil.CreateAsset(asset, typeof(T).Name + ".asset");
|
||
}
|
||
|
||
/// <summary>
|
||
/// Create an info text object which displays help info in the top left of the sceen.
|
||
/// </summary>
|
||
[MenuItem("Tools/Fungus/Utilities/Info Text")]
|
||
static void SpawnInfoText()
|
||
{
|
||
SpawnPrefab("Prefabs/InfoText", false);
|
||
}
|
||
}
|
||
}
|