コード例 #1
0
    public void OnPreprocessTexture()
    {
        string path = assetPath;
        string name = EditorUtils.NameFromPath(path);

        if (name.Contains("Placeholder"))
        {
            return;
        }

        if (path.Contains("Sprites") || path.Contains("UI") || path.Contains("tilesets"))
        {
            TextureImporter importer = (TextureImporter)assetImporter;
            importer.filterMode         = FilterMode.Point;
            importer.textureCompression = TextureImporterCompression.Uncompressed;
            importer.textureType        = TextureImporterType.Sprite;
            Vector2Int textureSize = EditorUtils.GetPreprocessedImageSize(importer);
            if (path.Contains("Charas"))
            {
                int edgeSizeX = 16;
                int edgeSizeY;
                if (path.Contains("anim_"))
                {
                    edgeSizeY = textureSize.y;
                }
                else
                {
                    edgeSizeY = 16;
                }
                int cols = textureSize.x / edgeSizeX;
                int rows = textureSize.y / edgeSizeY;
                importer.spritePixelsPerUnit = Map.PxPerTile / Map.UnitsPerTile;
                importer.spriteImportMode    = SpriteImportMode.Multiple;
                importer.spritesheet         = new SpriteMetaData[rows * cols];

                List <SpriteMetaData> spritesheet = new List <SpriteMetaData>();
                for (int y = 0; y < rows; y += 1)
                {
                    for (int x = 0; x < cols; x += 1)
                    {
                        SpriteMetaData data = importer.spritesheet[y * cols + x];
                        data.rect      = new Rect(x * edgeSizeX, (rows - y - 1) * edgeSizeY, edgeSizeX, edgeSizeY);
                        data.alignment = (int)SpriteAlignment.Custom;
                        data.border    = new Vector4(0, 0, 0, 0);
                        data.name      = FieldSpritesheetComponent.NameForFrame(name, x, y);
                        data.pivot     = new Vector2(0.5f, 0.0f);
                        spritesheet.Add(data);
                    }
                }
                importer.spritesheet = spritesheet.ToArray();
            }
        }
    }
コード例 #2
0
    public Sprite SpriteForMain(FieldSpritesheetComponent sprites = null)
    {
        if (sprites == null)
        {
            sprites = Sprites;
        }
        int x = Mathf.FloorToInt(moveTime * StepsPerSecond) % Sprites.StepCount;

        if (x == 3)
        {
            x = 1;
        }
        if (!stepping)
        {
            x = 1;
        }
        return(sprites.FrameBySlot(x, Facing));
    }