SKTextureUtil.createSpriteSheet C# (CSharp) Метод

createSpriteSheet() публичный статический Метод

public static createSpriteSheet ( string name, string sourceFolder, bool generateSdTexture, int cameraOrthoSize, int targetScreenHeight ) : SKSpriteSheet,
name string
sourceFolder string
generateSdTexture bool
cameraOrthoSize int
targetScreenHeight int
Результат SKSpriteSheet,
    public static SKSpriteSheet createSpriteSheet( string name, string sourceFolder, bool generateSdTexture, int cameraOrthoSize, int targetScreenHeight )
    {
        // validate that there are images in the folder and that the name has not been used
        var allSpriteSheets = getAllSpriteSheets();
        foreach( var s in allSpriteSheets )
        {
            if( s.imageSourceFolder.EndsWith( name ) )
            {
                Debug.LogError( "folder " + name + " is already contained by another sprite sheet" );
                return null;
            }
        }

        if( Directory.GetFiles( sourceFolder ).Length == 0 )
        {
            Debug.LogError( "folder " + name + " has no images in it" );
            return null;
        }

        var sheet = ScriptableObject.CreateInstance<SKSpriteSheet>();
        sheet.name = name;
        sheet.imageSourceFolder = sourceFolder;
        sheet.hasHdAtlas = generateSdTexture;
        sheet.cameraOrthoSize = cameraOrthoSize;
        sheet.targetScreenHeight = targetScreenHeight;
        sheet.refreshSourceImages();

        // material creation
        //var atlasPath = Path.Combine( defaultResourcesPath, sheet.name + "[email protected]" );
        sheet.material = new Material( Shader.Find( defaultShader ) );
        //sheet.material.SetTexture( "_MainTex", Resources.LoadAssetAtPath( atlasPath, typeof( Texture ) ) as Texture );
        AssetDatabase.CreateAsset( sheet.material, Path.Combine( defaultPath, name ) + "_material.mat" );

        var path = Path.Combine( defaultSpriteSheetPath, name + "_sheet.asset" );
        AssetDatabase.CreateAsset( sheet, path );
        AssetDatabase.SaveAssets();

        return sheet;
    }

Usage Example

Пример #1
0
    void OnGUI()
    {
        _generateSDTexture  = EditorGUILayout.Toggle("Auto-generate SD texture", _generateSDTexture);
        _orthoSize          = EditorGUILayout.IntField("Camera Ortho Size", _orthoSize);
        _targetScreenHeight = EditorGUILayout.IntField("Target Screen Height", _targetScreenHeight);

        GUI.enabled = false;
        EditorGUILayout.TextField("Image source folder", _sourceFolder);
        GUI.enabled = true;

        EditorGUILayout.HelpBox("If your camera is setup with matching settings to your sprite sheet all sprites will automatically be pixel perfect.", MessageType.None);


        GUILayout.Space(25);

        if (GUILayout.Button("Choose Image Source Folder"))
        {
            var folder = EditorUtility.OpenFolderPanel("SpriteKit Image Source Folder", "Assets", null);
            if (folder != string.Empty)
            {
                if (!folder.Contains("Assets"))
                {
                    EditorUtility.DisplayDialog("SpriteKit Error", "The folder you chose is outside of your project folder. The folder must already be in your project.", "OK");
                }
                else
                {
                    _sourceFolder = SKTextureUtil.makePathRelativeToProject(folder);
                }
            }
        }

        GUILayout.Space(15);

        if (GUILayout.Button("Create Sprite Sheet"))
        {
            if (_sourceFolder == null || _sourceFolder == string.Empty)
            {
                return;
            }

            SKTextureUtil.createSpriteSheet(Path.GetFileName(_sourceFolder), _sourceFolder, _generateSDTexture, _orthoSize, _targetScreenHeight);
            Close();
        }
    }