【问题标题】:unity c# Animation property change spriteunity c# 动画属性更改精灵
【发布时间】:2016-07-16 04:08:52
【问题描述】:

下午好。

在动画属性(精灵)中,如何在C#中改变某一帧的精灵? 我试图通过调用一个函数来放置一个事件,该函数采用 sprite 渲染对象并放入 sprite 字段但不更改 run 。 他运行在动画中定义它。我正在尝试直接在那里更改,但不知道该怎么做。

请帮忙!!

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    据我所见和研究,目前您无法做到这一点。

    最好的解决方法,我以前做过并且强烈推荐的方法,是创建一个类似于 CustomAnimationClip 脚本的东西,其中包含一组 sprite 和一个用于从每一帧切换到下一帧的计时器。然后你可以随时通过编辑数组来改变动画的精灵。

    这是一个例子:

    SpriteRenderer spriteRenderer;
    public Sprite[] frames;
    
    [SerializeField] int fps;
    int currentFrame = 0;
    
    float frameTime;
    float frameTimer = 0;
    
    void Awake()
    {
        spriteRenderer = GetComponent<SpriteRenderer>();
    }
    
    void Start()
    {
        frameTime = 1 / (float)fps;
        spriteRenderer.sprite = frames[0];
    }
    
    void Update()
    {
        if (frameTimer < frameTime)
        {
            frameTimer += Time.deltaTime;
        }
        else
        {
            spriteRenderer.sprite = frames[currentFrame];
            currentFrame = (currentFrame + 1) % (frames.Length);
            frameTimer = 0;
        }
    }
    

    【讨论】:

    • 如果它对你有用,你能接受我的回答吗:)?谢谢!
    猜你喜欢
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多