├── Plugins
├── InspectPlus
│ ├── InspectPlus.Runtime.asmdef
│ ├── README.txt
│ ├── Editor.meta
│ ├── InspectPlus.Runtime.asmdef.meta
│ ├── README.txt.meta
│ ├── Editor
│ │ ├── InspectPlus.Editor.asmdef.meta
│ │ ├── Utilities.cs.meta
│ │ ├── DebugModeEntry.cs.meta
│ │ ├── VariableGetter.cs.meta
│ │ ├── InspectPlusSettings.cs.meta
│ │ ├── InspectPlusWindow.cs.meta
│ │ ├── SerializedClipboard.cs.meta
│ │ ├── MenuItems.cs.meta
│ │ ├── SerializablePropertyExtensions.cs.meta
│ │ ├── BasketWindow.cs.meta
│ │ ├── InputDialog.cs.meta
│ │ ├── PasteBinWindow.cs.meta
│ │ ├── TypeWrapper.cs.meta
│ │ ├── CustomProjectWindow.cs.meta
│ │ ├── ObjectBrowserWindow.cs.meta
│ │ ├── ObjectDiffWindow.cs.meta
│ │ ├── PasteBinTooltip.cs.meta
│ │ ├── CustomHierarchyWindow.cs.meta
│ │ ├── PasteBinContextWindow.cs.meta
│ │ ├── ComponentGroupCopyPasteWindow.cs.meta
│ │ ├── InspectPlus.Editor.asmdef
│ │ ├── TypeWrapper.cs
│ │ ├── InputDialog.cs
│ │ ├── PasteBinTooltip.cs
│ │ ├── InspectPlusSettings.cs
│ │ ├── VariableGetter.cs
│ │ ├── ObjectBrowserWindow.cs
│ │ ├── PasteBinContextWindow.cs
│ │ ├── ComponentGroupCopyPasteWindow.cs
│ │ ├── Utilities.cs
│ │ ├── DebugModeEntry.cs
│ │ ├── PasteBinWindow.cs
│ │ ├── BasketWindow.cs
│ │ ├── CustomHierarchyWindow.cs
│ │ └── CustomProjectWindow.cs
│ ├── Other.meta
│ └── Other
│ │ ├── SceneFavoritesHolder.cs.meta
│ │ └── SceneFavoritesHolder.cs
└── InspectPlus.meta
├── .github
├── Images
│ ├── Basket.png
│ ├── DebugMode.png
│ ├── DiffWindow.png
│ ├── InspectType.gif
│ ├── CopyProperties.png
│ ├── FavoritesList.png
│ ├── IsolatedFolder.png
│ ├── PasteFromBin.png
│ ├── Screenshot_Old.png
│ ├── InspectPlusWindow.png
│ ├── IsolatedHierarchy.png
│ └── CopyMultipleComponents.gif
└── README.md
├── LICENSE.txt.meta
├── package.json.meta
├── Plugins.meta
├── package.json
└── LICENSE.txt
/Plugins/InspectPlus/InspectPlus.Runtime.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "InspectPlus.Runtime"
3 | }
4 |
--------------------------------------------------------------------------------
/.github/Images/Basket.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityInspectPlus/HEAD/.github/Images/Basket.png
--------------------------------------------------------------------------------
/.github/Images/DebugMode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityInspectPlus/HEAD/.github/Images/DebugMode.png
--------------------------------------------------------------------------------
/.github/Images/DiffWindow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityInspectPlus/HEAD/.github/Images/DiffWindow.png
--------------------------------------------------------------------------------
/.github/Images/InspectType.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityInspectPlus/HEAD/.github/Images/InspectType.gif
--------------------------------------------------------------------------------
/.github/Images/CopyProperties.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityInspectPlus/HEAD/.github/Images/CopyProperties.png
--------------------------------------------------------------------------------
/.github/Images/FavoritesList.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityInspectPlus/HEAD/.github/Images/FavoritesList.png
--------------------------------------------------------------------------------
/.github/Images/IsolatedFolder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityInspectPlus/HEAD/.github/Images/IsolatedFolder.png
--------------------------------------------------------------------------------
/.github/Images/PasteFromBin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityInspectPlus/HEAD/.github/Images/PasteFromBin.png
--------------------------------------------------------------------------------
/.github/Images/Screenshot_Old.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityInspectPlus/HEAD/.github/Images/Screenshot_Old.png
--------------------------------------------------------------------------------
/.github/Images/InspectPlusWindow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityInspectPlus/HEAD/.github/Images/InspectPlusWindow.png
--------------------------------------------------------------------------------
/.github/Images/IsolatedHierarchy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityInspectPlus/HEAD/.github/Images/IsolatedHierarchy.png
--------------------------------------------------------------------------------
/.github/Images/CopyMultipleComponents.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityInspectPlus/HEAD/.github/Images/CopyMultipleComponents.gif
--------------------------------------------------------------------------------
/Plugins/InspectPlus/README.txt:
--------------------------------------------------------------------------------
1 | = Inspect+ (v2.1.0) =
2 |
3 | Documentation: https://github.com/yasirkula/UnityInspectPlus
4 | E-mail: yasirkula@gmail.com
--------------------------------------------------------------------------------
/LICENSE.txt.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5c207cf1ec4303f428670b60a837b365
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/package.json.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 295ce88604dd2c9458eded0a97248eb4
3 | PackageManifestImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Plugins.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1d3ac4b7817179b44b5b0e158cf6ac8c
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: db7f13a558fd7554bbcc86d40e4e5eb7
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a90ec479c42a9ef4083371125594dbc7
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/InspectPlus.Runtime.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 87c9414dc782f82419a783f415f5ee19
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/README.txt.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 23a864ec2bc41d84cbb953b10dd73b56
3 | timeCreated: 1563308465
4 | licenseType: Free
5 | TextScriptImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/InspectPlus.Editor.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f79e68d4935263c44a9451a81a8759a2
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Other.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3bb3d3df673972c45ad0cdec7c5bb22b
3 | folderAsset: yes
4 | timeCreated: 1571948004
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/Utilities.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a9d4fd784a6d59f488fd66ad1762bda6
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/DebugModeEntry.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6f46de5e6b04f1347bfaa3086d43d517
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/VariableGetter.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cc77df5f8984cf7468f62a6bd65e8fd1
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/InspectPlusSettings.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d7273ea0be8115043a05674b824ee154
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/InspectPlusWindow.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 697217bf12c7ce44c8557aff1093a749
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/SerializedClipboard.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bb7afcb570c39c04b8163dd5aee546e4
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Other/SceneFavoritesHolder.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 13e8a564be926574fad674834ab13d6b
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/MenuItems.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9e02f41f9df3ce84d956ec426fd91b4b
3 | timeCreated: 1604519902
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/SerializablePropertyExtensions.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a972856e61619d548a718647194f3be9
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/BasketWindow.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7e3d37958bd88e34ca38f290aa521acb
3 | timeCreated: 1641661059
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/InputDialog.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 023869e58397f4048b37c26020a762b5
3 | timeCreated: 1732609727
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/PasteBinWindow.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 92fa7d0db9ee6de40a5bb4d9283e6a6e
3 | timeCreated: 1582219473
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/TypeWrapper.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 601dcc85f7fd8db45b89909555dab1bc
3 | timeCreated: 1732605659
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/CustomProjectWindow.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 507f59f2ac5c29b45bc8c11ea72dd6c5
3 | timeCreated: 1474880986
4 | licenseType: Pro
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/ObjectBrowserWindow.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f3ed1a5a17dc0104f922d827d8a99c81
3 | timeCreated: 1582191773
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/ObjectDiffWindow.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 550e7fb68096d744e8aa02d7b0ed863b
3 | timeCreated: 1617274040
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/PasteBinTooltip.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: dab374f4d28d7c94e9058c76f8a0a039
3 | timeCreated: 1604654868
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/CustomHierarchyWindow.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 69a3f5517e7b1a248a1a374189b1ba7b
3 | timeCreated: 1471510735
4 | licenseType: Pro
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/PasteBinContextWindow.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a03e5691381150145b9b5a20b59728c2
3 | timeCreated: 1601118263
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/ComponentGroupCopyPasteWindow.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fae2291dbfb04574383593c3c63dd8ce
3 | timeCreated: 1632345177
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/InspectPlus.Editor.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "InspectPlus.Editor",
3 | "references": [
4 | "InspectPlus.Runtime"
5 | ],
6 | "includePlatforms": [
7 | "Editor"
8 | ],
9 | "excludePlatforms": [],
10 | "allowUnsafeCode": false,
11 | "overrideReferences": false,
12 | "precompiledReferences": [],
13 | "autoReferenced": true,
14 | "defineConstraints": [],
15 | "versionDefines": [],
16 | "noEngineReferences": false
17 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "com.yasirkula.inspectplus",
3 | "displayName": "Inspect+",
4 | "version": "2.1.0",
5 | "documentationUrl": "https://github.com/yasirkula/UnityInspectPlus",
6 | "changelogUrl": "https://github.com/yasirkula/UnityInspectPlus/releases",
7 | "licensesUrl": "https://github.com/yasirkula/UnityInspectPlus/blob/master/LICENSE.txt",
8 | "description": "This plugin helps you view an object's Inspector in a separate tab/window, copy&paste the values of variables in the Inspector and inspect all variables of an object (including non-serializable and static variables) in an enhanced Debug mode."
9 | }
10 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Other/SceneFavoritesHolder.cs:
--------------------------------------------------------------------------------
1 | #if UNITY_EDITOR
2 | using UnityEngine.SceneManagement;
3 | using UnityEditor;
4 | using UnityEditor.SceneManagement;
5 | #endif
6 | using UnityEngine;
7 |
8 | namespace InspectPlusNamespace
9 | {
10 | ///
11 | /// No longer used because it's saved in scene and therefore isn't user-specific. Use "Window/Inspect+/Basket" instead.
12 | ///
13 | [ExecuteInEditMode]
14 | public class SceneFavoritesHolder : MonoBehaviour
15 | {
16 | #if UNITY_EDITOR
17 | private void Awake()
18 | {
19 | EditorApplication.delayCall += () =>
20 | {
21 | if( this != null && !Application.isPlaying )
22 | {
23 | Scene scene = gameObject.scene;
24 | DestroyImmediate( gameObject );
25 | EditorSceneManager.MarkSceneDirty( scene );
26 | Debug.Log( "(Inspect+) Removed deprecated SceneFavoritesHolder GameObject from scene: " + scene.name );
27 | }
28 | };
29 | }
30 | #endif
31 | }
32 | }
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/TypeWrapper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using UnityEngine;
3 |
4 | namespace InspectPlusNamespace
5 | {
6 | public class TypeWrapper : ScriptableObject, ISerializationCallbackReceiver
7 | {
8 | public Type Type { get; private set; }
9 |
10 | [SerializeField, HideInInspector]
11 | private string typeName;
12 |
13 | public static TypeWrapper Create( Type type )
14 | {
15 | TypeWrapper result = CreateInstance();
16 | result.name = type.Name + " Statics";
17 | result.Type = type;
18 | result.hideFlags = HideFlags.DontSaveInBuild | HideFlags.DontSaveInEditor;
19 | return result;
20 | }
21 |
22 | void ISerializationCallbackReceiver.OnBeforeSerialize()
23 | {
24 | if( Type != null )
25 | typeName = Type.AssemblyQualifiedName;
26 | }
27 |
28 | void ISerializationCallbackReceiver.OnAfterDeserialize()
29 | {
30 | if( !string.IsNullOrEmpty( typeName ) )
31 | Type = Type.GetType( typeName );
32 | }
33 | }
34 | }
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Süleyman Yasir KULA
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/InputDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using UnityEditor;
3 | using UnityEngine;
4 | using Object = UnityEngine.Object;
5 |
6 | namespace InspectPlusNamespace
7 | {
8 | public abstract class InputDialog : EditorWindow
9 | {
10 | private string description;
11 | protected T value;
12 | private Action onResult;
13 | private Action onCancel;
14 |
15 | private bool initialized;
16 | private Vector2 scrollPosition;
17 |
18 | protected void Initialize( string description, T value, Action onResult, Action onCancel )
19 | {
20 | this.description = description;
21 | this.value = value;
22 | this.onResult = onResult;
23 | this.onCancel = onCancel;
24 |
25 | titleContent = GUIContent.none;
26 | minSize = new Vector2( 100f, 50f );
27 |
28 | ShowAuxWindow();
29 | Focus();
30 | }
31 |
32 | protected void OnDisable()
33 | {
34 | onCancel?.Invoke();
35 | onResult = null;
36 | onCancel = null;
37 | }
38 |
39 | private void OnGUI()
40 | {
41 | Event ev = Event.current;
42 | bool inputSubmitted = ev.type == EventType.KeyDown && ev.character == '\n';
43 |
44 | scrollPosition = EditorGUILayout.BeginScrollView( scrollPosition );
45 |
46 | if( !initialized )
47 | GUILayout.BeginVertical();
48 |
49 | GUILayout.Label( description, EditorStyles.wordWrappedLabel );
50 |
51 | GUI.SetNextControlName( "InputD" );
52 | OnInputGUI();
53 |
54 | if( GUILayout.Button( "OK" ) || inputSubmitted )
55 | {
56 | onResult?.Invoke( value );
57 | onResult = null;
58 | onCancel = null;
59 |
60 | Close();
61 | }
62 |
63 | if( !initialized )
64 | {
65 | GUILayout.EndVertical();
66 |
67 | float preferredHeight = GUILayoutUtility.GetLastRect().height;
68 | if( preferredHeight > 10f )
69 | {
70 | position = new Rect( position.position, new Vector2( position.width, preferredHeight + 15f ) );
71 | initialized = true;
72 |
73 | EditorGUI.FocusTextInControl( "InputD" );
74 | GUIUtility.ExitGUI();
75 | }
76 | }
77 |
78 | EditorGUILayout.EndScrollView();
79 | }
80 |
81 | protected abstract void OnInputGUI();
82 | }
83 |
84 | public class StringInputDialog : InputDialog
85 | {
86 | public static void Show( string description, string value, Action onResult, Action onCancel = null )
87 | {
88 | CreateInstance().Initialize( description, value, onResult, onCancel );
89 | }
90 |
91 | protected override void OnInputGUI()
92 | {
93 | value = EditorGUILayout.TextField( GUIContent.none, value );
94 | }
95 | }
96 | }
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/PasteBinTooltip.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using UnityEditor;
3 | using UnityEngine;
4 |
5 | namespace InspectPlusNamespace
6 | {
7 | public class PasteBinTooltip : EditorWindow
8 | {
9 | private static PasteBinTooltip mainWindow;
10 | private static string tooltip;
11 |
12 | private static GUIStyle m_style;
13 | internal static GUIStyle Style
14 | {
15 | get
16 | {
17 | if( m_style == null )
18 | m_style = (GUIStyle) typeof( EditorStyles ).GetProperty( "tooltip", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static ).GetValue( null, null );
19 |
20 | return m_style;
21 | }
22 | }
23 |
24 | public static void Show( Rect sourcePosition, string tooltip )
25 | {
26 | // Don't lose focus to the previous window (in this case, PasteBinContextWindow which automatically closes when it loses focus)
27 | EditorWindow prevFocusedWindow = focusedWindow;
28 |
29 | if (!mainWindow)
30 | {
31 | mainWindow = CreateInstance();
32 | mainWindow.ShowPopup();
33 | }
34 |
35 | Vector2 preferredSize = Style.CalcSize( new GUIContent( tooltip ) ) + Style.contentOffset + new Vector2( Style.padding.horizontal + Style.margin.horizontal, Style.padding.vertical + Style.margin.vertical );
36 | Rect preferredPosition;
37 |
38 | Rect positionLeft = new Rect( sourcePosition.position - new Vector2( preferredSize.x, 0f ), preferredSize );
39 | Rect screenFittedPositionLeft = Utilities.GetScreenFittedRect(positionLeft, mainWindow);
40 |
41 | Vector2 positionOffset = positionLeft.position - screenFittedPositionLeft.position;
42 | Vector2 sizeOffset = positionLeft.size - screenFittedPositionLeft.size;
43 | if( positionOffset.sqrMagnitude <= 400f && sizeOffset.sqrMagnitude <= 400f )
44 | preferredPosition = screenFittedPositionLeft;
45 | else
46 | {
47 | Rect positionRight = new Rect( sourcePosition.position + new Vector2( sourcePosition.width, 0f ), preferredSize );
48 | Rect screenFittedPositionRight = Utilities.GetScreenFittedRect(positionRight, mainWindow);
49 |
50 | Vector2 positionOffset2 = positionRight.position - screenFittedPositionRight.position;
51 | Vector2 sizeOffset2 = positionRight.size - screenFittedPositionRight.size;
52 | if( positionOffset2.magnitude + sizeOffset2.magnitude < positionOffset.magnitude + sizeOffset.magnitude )
53 | preferredPosition = screenFittedPositionRight;
54 | else
55 | preferredPosition = screenFittedPositionLeft;
56 | }
57 |
58 | PasteBinTooltip.tooltip = tooltip;
59 | mainWindow.minSize = preferredPosition.size;
60 | mainWindow.position = preferredPosition;
61 | mainWindow.Repaint();
62 |
63 | if( prevFocusedWindow )
64 | prevFocusedWindow.Focus();
65 | }
66 |
67 | public static void Hide()
68 | {
69 | if( mainWindow )
70 | {
71 | mainWindow.Close();
72 | mainWindow = null;
73 | }
74 | }
75 |
76 | private void OnGUI()
77 | {
78 | // If somehow the tooltip isn't automatically closed, allow closing it by clicking on it
79 | if( Event.current.type == EventType.MouseDown )
80 | {
81 | Hide();
82 | GUIUtility.ExitGUI();
83 | }
84 |
85 | GUI.Label( new Rect( Vector2.zero, position.size ), tooltip, Style );
86 | }
87 | }
88 | }
--------------------------------------------------------------------------------
/.github/README.md:
--------------------------------------------------------------------------------
1 | # Unity Inspect+ Plugin
2 |
3 | This plugin helps you view an object's Inspector in a separate tab/window, copy&paste the values of variables in the Inspector, inspect all variables of an object (including non-serializable and static variables) in an enhanced Debug mode and more.
4 |
5 | **Discord:** https://discord.gg/UJJt549AaV
6 |
7 | **[GitHub Sponsors ☕](https://github.com/sponsors/yasirkula)**
8 |
9 | ## INSTALLATION
10 |
11 | There are 4 ways to install this plugin:
12 |
13 | - import [InspectPlus.unitypackage](https://github.com/yasirkula/UnityInspectPlus/releases) via *Assets-Import Package*
14 | - clone/[download](https://github.com/yasirkula/UnityInspectPlus/archive/master.zip) this repository and move the *Plugins* folder to your Unity project's *Assets* folder
15 | - *(via Package Manager)* click the + button and install the package from the following git URL:
16 | - `https://github.com/yasirkula/UnityInspectPlus.git`
17 | - *(via [OpenUPM](https://openupm.com))* after installing [openupm-cli](https://github.com/openupm/openupm-cli), run the following command:
18 | - `openupm add com.yasirkula.inspectplus`
19 |
20 | ## HOW TO
21 |
22 | - You can open the Inspect+ window in a number of ways:
23 | - right clicking an object in *Project* or *Hierarchy* windows
24 | - right clicking an *Object* variable in the Inspector
25 | - right clicking a component in the Inspector
26 | - selecting **Window/Inspect+/New Window** menu item
27 | - calling the `InspectPlusNamespace.InspectPlusWindow.Inspect` functions from your editor scripts
28 |
29 | 
30 |
31 | - You can right click an object in the **History** list to add it to the **Favorites** list
32 | - You can drag&drop objects to the History and Favorites lists to quickly fill these lists
33 | - You can right click the icons of the History and Favorites lists to quickly select an object from these lists
34 |
35 | 
36 |
37 | - You can right click variables or components in the Inspector to copy&paste their values. This supports all variable types: primitives, scene objects, assets, managed references, arrays, serializable objects and etc. Paste operation is quite flexible, as well; you can paste different vector types to each other and paste any component to another with no type restrictions, as long as these components have some variables with the same name. Note that copy/paste menu won't show up for variables that are not drawn with *SerializedProperty*
38 |
39 | 
40 |
41 | - You can right click a component and copy multiple components attached to that GameObject at once. Then, you can right click another component and paste multiple components at once
42 |
43 | 
44 |
45 | - You can right click an object in Hierarchy and copy its complete hierarchy (with or without its children). Then, you can paste these objects to another Unity project's hierarchy; Unity versions don't need to match (however, assets that don't exist on the other project will become missing references)
46 | - You can right click the Inspect+ tab to enable **Debug mode**: you can inspect all variables of an object in this mode, including static, readonly and non-serializable variables
47 |
48 | 
49 |
50 | - Select **Window/Inspect+/Inspect Type** to inspect a Type's static variables (e.g. *UnityEngine.Time*) (tip: if you put an '\*' at the end of the type name, the first Object instance of the given Type will be inspected instead)
51 |
52 | 
53 |
54 | - You can right click an object in Hierarchy and select the **Isolated Hierarchy** option to open a Hierarchy window that displays only that object's children
55 |
56 | 
57 |
58 | - You can open a folder with Inspect+ to see its contents in an isolated Project view
59 |
60 | 
61 |
62 | - You can open Paste Bin via **Window/Inspect+/Paste Bin**: this window lists the copied variables and is shared between all Unity projects (so, copying a value in Project A will make that value available in Project B). You can also right click variables, components or materials in the Inspector and select **Paste Values From Bin** to quickly select and paste a value from Paste Bin
63 |
64 | 
65 |
66 | - You can open Basket via **Window/Inspect+/Basket**: this window stores the objects that you drag&drop inside it. You can right click the window's tab to save its contents to a file (on Unity 2019.1 or earlier, scene object contents aren't saved)
67 |
68 | 
69 |
70 | - You can open Object Diff Window via **Window/Inspect+/Diff Window**: this window lets you see the differences between two objects in your project (diff of two GameObjects won't include their child GameObjects)
71 |
72 | 
73 |
--------------------------------------------------------------------------------
/Plugins/InspectPlus/Editor/InspectPlusSettings.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.IO;
3 | using UnityEditor;
4 | using UnityEditorInternal;
5 | using UnityEngine;
6 |
7 | namespace InspectPlusNamespace
8 | {
9 | public class InspectPlusSettings : ScriptableObject
10 | {
11 | private const string SAVE_PATH = "UserSettings/InspectPlusSettings.asset";
12 |
13 | private static InspectPlusSettings m_instance;
14 | public static InspectPlusSettings Instance
15 | {
16 | get
17 | {
18 | if( m_instance == null )
19 | {
20 | if( File.Exists( SAVE_PATH ) )
21 | m_instance = InternalEditorUtility.LoadSerializedFileAndForget( SAVE_PATH )[0] as InspectPlusSettings;
22 | else
23 | m_instance = CreateInstance();
24 |
25 | m_instance.name = typeof( InspectPlusSettings ).Name;
26 | m_instance.hideFlags = HideFlags.DontSave;
27 | }
28 |
29 | return m_instance;
30 | }
31 | }
32 |
33 | public List