Merge pull request #15 from naninunenoy/rootnamespace

add root namespace textfield at rename view
This commit is contained in:
Nakano Yosuke 2021-10-13 02:10:51 +09:00 committed by GitHub
commit ab03e64ec3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 64 additions and 43 deletions

View File

@ -33,43 +33,43 @@ namespace AsmdefHelper.CustomCreate.Editor {
root.Add(labelFromUXML); root.Add(labelFromUXML);
// UI取得 // UI取得
var PathTextField = root.Q<TextField>(className: "PathTextField"); var pathTextField = root.Q<TextField>(className: "PathTextField");
var NameTextField = root.Q<TextField>(className: "NameTextField"); var nameTextField = root.Q<TextField>(className: "NameTextField");
var AllowUnsafeToggle = root.Q<Toggle>(className: "AllowUnsafeToggle"); var allowUnsafeToggle = root.Q<Toggle>(className: "AllowUnsafeToggle");
var AutoReferencedToggle = root.Q<Toggle>(className: "AutoReferencedToggle"); var autoReferencedToggle = root.Q<Toggle>(className: "AutoReferencedToggle");
var NoEngineReferencesToggle = root.Q<Toggle>(className: "NoEngineReferencesToggle"); var noEngineReferencesToggle = root.Q<Toggle>(className: "NoEngineReferencesToggle");
var OverrideReferencesToggle = root.Q<Toggle>(className: "OverrideReferencesToggle"); var overrideReferencesToggle = root.Q<Toggle>(className: "OverrideReferencesToggle");
var RootNamespaceTextField = root.Q<TextField>(className: "RootNamespaceTextField"); var rootNamespaceTextField = root.Q<TextField>(className: "RootNamespaceTextField");
var IsEditorToggle = root.Q<Toggle>(className: "IsEditorToggle"); var isEditorToggle = root.Q<Toggle>(className: "IsEditorToggle");
var CreateButton = root.Q<Button>(className: "CreateButton"); var createButton = root.Q<Button>(className: "CreateButton");
// PathとNameの初期値 // PathとNameの初期値
var asset = Selection.activeObject; var asset = Selection.activeObject;
var assetPath = AssetDatabase.GetAssetPath(asset); var assetPath = AssetDatabase.GetAssetPath(asset);
var directory = string.IsNullOrWhiteSpace(assetPath) ? "Assets/" : assetPath; var directory = string.IsNullOrWhiteSpace(assetPath) ? "Assets/" : assetPath;
PathTextField.value = directory; pathTextField.value = directory;
var defaultName = directory.Replace("Assets/", "").Replace('/', '.'); var defaultName = directory.Replace("Assets/", "").Replace('/', '.');
NameTextField.value = defaultName; nameTextField.value = defaultName;
// RootNamespace が設定できるのは2020.2以降 // RootNamespace が設定できるのは2020.2以降
#if UNITY_2020_2_OR_NEWER #if UNITY_2020_2_OR_NEWER
RootNamespaceTextField.value = defaultName; rootNamespaceTextField.value = defaultName;
#else #else
root.Q<Box>(className: "Box").Remove(RootNamespaceTextField); root.Q<Box>(className: "Box").Remove(rootNamespaceTextField);
#endif #endif
// .asmdefを作成して閉じる // .asmdefを作成して閉じる
CreateButton.clickable.clicked += () => { createButton.clickable.clicked += () => {
var asmdefName = NameTextField.value; var asmdefName = nameTextField.value;
var asmdef = new AssemblyDefinitionJson { var asmdef = new AssemblyDefinitionJson {
name = asmdefName, name = asmdefName,
#if UNITY_2020_2_OR_NEWER #if UNITY_2020_2_OR_NEWER
rootNamespace = RootNamespaceTextField.value, rootNamespace = rootNamespaceTextField.value,
#endif #endif
allowUnsafeCode = AllowUnsafeToggle.value, allowUnsafeCode = allowUnsafeToggle.value,
autoReferenced = AutoReferencedToggle.value, autoReferenced = autoReferencedToggle.value,
overrideReferences = OverrideReferencesToggle.value, overrideReferences = overrideReferencesToggle.value,
noEngineReferences = NoEngineReferencesToggle.value, noEngineReferences = noEngineReferencesToggle.value,
includePlatforms = IsEditorToggle.value ? new[] { "Editor" } : new string[0] includePlatforms = isEditorToggle.value ? new[] { "Editor" } : new string[0]
}; };
var asmdefJson = JsonUtility.ToJson(asmdef, true); var asmdefJson = JsonUtility.ToJson(asmdef, true);
var asmdefPath = $"{directory}/{asmdefName}.asmdef"; var asmdefPath = $"{directory}/{asmdefName}.asmdef";

View File

@ -21,8 +21,8 @@ namespace AsmdefHelper.CustomCreate.Editor {
if (extension == "asmdef") { if (extension == "asmdef") {
var window = GetWindow<AsmdefRenameView>(); var window = GetWindow<AsmdefRenameView>();
window.titleContent = new GUIContent("AsmdefRenameView"); window.titleContent = new GUIContent("AsmdefRenameView");
window.minSize = new Vector2(200, 80); window.minSize = new Vector2(200, 100);
window.maxSize = new Vector2(2000, 80); window.maxSize = new Vector2(2000, 100);
} }
} }
@ -44,29 +44,42 @@ namespace AsmdefHelper.CustomCreate.Editor {
root.Add(labelFromUXML); root.Add(labelFromUXML);
// UI取得 // UI取得
var PathTextField = root.Q<TextField>(className: "PathTextField"); var pathTextField = root.Q<TextField>(className: "PathTextField");
var NameTextField = root.Q<TextField>(className: "NameTextField"); var nameTextField = root.Q<TextField>(className: "NameTextField");
var CreateButton = root.Q<Button>(className: "RenameButton"); var rootNamespaceTextField = root.Q<TextField>(className: "RootNamespaceTextField");
var createButton = root.Q<Button>(className: "RenameButton");
// 既存のasmdef読み込み // 既存のasmdef読み込み
var orgText = File.ReadAllText(renameAsmdefPath); var orgText = File.ReadAllText(renameAsmdefPath);
var asmdef = JsonUtility.FromJson<AssemblyDefinitionJson>(orgText); var asmdef = JsonUtility.FromJson<AssemblyDefinitionJson>(orgText);
// 既存パラメータの反映 // 既存パラメータの反映
PathTextField.value = asmdefDirectory; pathTextField.value = asmdefDirectory;
NameTextField.value = asmdef.name; nameTextField.value = asmdef.name;
var asmdefNameOrg = asmdef.name;
// RootNamespace が設定できるのは2020.2以降
#if UNITY_2020_2_OR_NEWER
rootNamespaceTextField.value = asmdef.rootNamespace;
#else
root.Q<Box>(className: "Box").Remove(rootNamespaceTextField);
#endif
// .asmdefのnameとファイル名を更新して閉じる // .asmdefのnameとファイル名を更新して閉じる
CreateButton.clickable.clicked += () => { createButton.clickable.clicked += () => {
// nameのみ更新 var asmdefName = nameTextField.value;
var asmdefName = NameTextField.value;
asmdef.name = asmdefName; asmdef.name = asmdefName;
#if UNITY_2020_2_OR_NEWER
asmdef.rootNamespace = rootNamespaceTextField.value;
#endif
var asmdefJson = JsonUtility.ToJson(asmdef, true); var asmdefJson = JsonUtility.ToJson(asmdef, true);
var newAsmdefPath = $"{asmdefDirectory}/{asmdefName}.asmdef"; var newAsmdefPath = $"{asmdefDirectory}/{asmdefName}.asmdef";
// 新asmdef作成 // 新asmdef作成
File.WriteAllText(newAsmdefPath, asmdefJson, Encoding.UTF8); File.WriteAllText(newAsmdefPath, asmdefJson, Encoding.UTF8);
// 旧asmdef削除 // ファイル名が変わった場合は旧asmdef削除
File.Delete(renameAsmdefPath); if (asmdefNameOrg != asmdefName) {
FileUtil.DeleteFileOrDirectory(renameAsmdefPath);
}
AssetDatabase.Refresh(); AssetDatabase.Refresh();
Close(); Close();
}; };

View File

@ -9,6 +9,7 @@
<engine:Box> <engine:Box>
<engine:TextField class="PathTextField" label="Path" text="ASMDEF_PATH_HERE" readonly="true"/> <engine:TextField class="PathTextField" label="Path" text="ASMDEF_PATH_HERE" readonly="true"/>
<engine:TextField class="NameTextField" label="Name" text="ASMDEF_NAME_HERE"/> <engine:TextField class="NameTextField" label="Name" text="ASMDEF_NAME_HERE"/>
<engine:TextField label="Root Namespace" text="ROOT_NAMESPACE_HERE" class="RootNamespaceTextField" />
<engine:Button class="RenameButton" text="Rename" /> <engine:Button class="RenameButton" text="Rename" />
</engine:Box> </engine:Box>
</engine:UXML> </engine:UXML>

View File

@ -1,7 +1,7 @@
{ {
"name": "dev.n5y.asmdefhelper", "name": "dev.n5y.asmdefhelper",
"displayName": "AsmdefHelper", "displayName": "AsmdefHelper",
"version": "0.5.0", "version": "0.5.1",
"unity": "2019.3", "unity": "2019.3",
"description": "Unity assembly definition utilities.", "description": "Unity assembly definition utilities.",
"keywords": ["asmdef", "editor"], "keywords": ["asmdef", "editor"],

View File

@ -1,8 +1,8 @@
{ {
"dependencies": { "dependencies": {
"com.unity.ide.rider": "3.0.6", "com.unity.ide.rider": "3.0.7",
"com.unity.ide.visualstudio": "2.0.7", "com.unity.ide.visualstudio": "2.0.9",
"com.unity.test-framework": "1.1.24", "com.unity.test-framework": "1.1.27",
"com.unity.modules.ai": "1.0.0", "com.unity.modules.ai": "1.0.0",
"com.unity.modules.androidjni": "1.0.0", "com.unity.modules.androidjni": "1.0.0",
"com.unity.modules.animation": "1.0.0", "com.unity.modules.animation": "1.0.0",

View File

@ -8,7 +8,7 @@
"url": "https://packages.unity.com" "url": "https://packages.unity.com"
}, },
"com.unity.ide.rider": { "com.unity.ide.rider": {
"version": "3.0.6", "version": "3.0.7",
"depth": 0, "depth": 0,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {
@ -17,7 +17,7 @@
"url": "https://packages.unity.com" "url": "https://packages.unity.com"
}, },
"com.unity.ide.visualstudio": { "com.unity.ide.visualstudio": {
"version": "2.0.7", "version": "2.0.9",
"depth": 0, "depth": 0,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {
@ -26,7 +26,7 @@
"url": "https://packages.unity.com" "url": "https://packages.unity.com"
}, },
"com.unity.test-framework": { "com.unity.test-framework": {
"version": "1.1.24", "version": "1.1.27",
"depth": 0, "depth": 0,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {

View File

@ -1,2 +1,2 @@
m_EditorVersion: 2021.1.7f1 m_EditorVersion: 2021.1.16f1
m_EditorVersionWithRevision: 2021.1.7f1 (d91830b65d9b) m_EditorVersionWithRevision: 2021.1.16f1 (5fa502fca597)

View File

@ -6,6 +6,13 @@ Unity assembly definition utilities.
This library solve inconvenience of assembly definition on unity. This library solve inconvenience of assembly definition on unity.
### install via upm
Please add this line to `dependencies` of `Packages/manifest.json`.
```
"dev.n5y.asmdefhelper": "https://github.com/naninunenoy/AsmdefHelper.git?path=Assets"
```
## Dependency Graph ## Dependency Graph
Unity assembly definition viewer. Unity assembly definition viewer.
@ -63,7 +70,7 @@ And you can also rename an asmdef by one action.
___ ___
## Environment ## Environment
Unity 2021.1.7f1 Unity 2021.1.16f1
This library use unity internal class, so may be not work (or couse build error) depending your unity vresion. This library use unity internal class, so may be not work (or couse build error) depending your unity vresion.