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

View File

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

View File

@ -9,6 +9,7 @@
<engine:Box>
<engine:TextField class="PathTextField" label="Path" text="ASMDEF_PATH_HERE" readonly="true"/>
<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:Box>
</engine:UXML>

View File

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

View File

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

View File

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

View File

@ -1,2 +1,2 @@
m_EditorVersion: 2021.1.7f1
m_EditorVersionWithRevision: 2021.1.7f1 (d91830b65d9b)
m_EditorVersion: 2021.1.16f1
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.
### 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
Unity assembly definition viewer.
@ -63,7 +70,7 @@ And you can also rename an asmdef by one action.
___
## 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.