Created
October 25, 2019 07:19
-
-
Save liortal53/111ee2a659b0d59c80faab0f5d457531 to your computer and use it in GitHub Desktop.
Embed package into your Unity project to modify the code more easily :)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.IO; | |
using UnityEditor.PackageManager; | |
using UnityEngine; | |
namespace UnityEditor.Extensions | |
{ | |
#if UNITY_2017_3_OR_NEWER | |
/// <summary> | |
/// Editor extension for embedding packages as a local copy in the project. | |
/// This can be useful in case you want to modify the package's source code. | |
/// </summary> | |
public static class EmbedPackage | |
{ | |
[MenuItem("Assets/Embed Package", false, 1000000)] | |
private static void EmbedPackageMenuItem() | |
{ | |
var selection = Selection.activeObject; | |
var packageName = Path.GetFileName(AssetDatabase.GetAssetPath(selection)); | |
Debug.Log($"Embedding package '{packageName}' into the project."); | |
Client.Embed(packageName); | |
AssetDatabase.Refresh(); | |
} | |
[MenuItem("Assets/Embed Package", true)] | |
private static bool EmbedPackageValidation() | |
{ | |
var selection = Selection.activeObject; | |
if (selection == null) | |
{ | |
return false; | |
} | |
var path = AssetDatabase.GetAssetPath(selection); | |
var folder = Path.GetDirectoryName(path); | |
// We only deal with direct folders under Packages/ | |
return folder == "Packages"; | |
} | |
} | |
#endif | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I was having an issue where Selection.activeObject was not reflecting the folder I clicked. Perhaps Unity changed their interface to make folders no longer behave as a selected object. Here is my fix: