Unity TimeLine循环播放某个时间段
1、设置Playable Director的Update Method为GameTime模式
2、API : using UnityEngine.Playables;
我们需要用到PlayableDirector的time属性
3、设置开始和结束时间段(使用的帧率)我在0-158帧循环和158到290帧之间循环
4、代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;
using System;
public class ModlesManager : MonoBehaviour
{
public GameObject m_Book;//PlayableDirector 组件的载体
public List<TimeScopes> m_TimeScopes = new List<TimeScopes>();//设置时间段
private PlayableDirector m_BookAndLight;
private bool m_IsCanPlay;//是否播放timeline
void Start()
{
m_BookAndLight = m_Book.GetComponent<PlayableDirector>();
}
public void SetIsCanPlay(bool ison)
{
m_IsCanPlay = ison;
}
private void PlayTimeline()
{
if (m_IsCanPlay)
{
m_BookAndLight.time += Time.deltaTime;
//加30是为了在争取在循环的时候能最贴合动画时间,可以自己测试自己动画时间
if(m_BookAndLight.time>= Getfps(m_TimeScopes[1].m_TimeStart+30))
{
}
if (m_BookAndLight.time >= Getfps(m_TimeScopes[m_TimeScopeindex].m_TimeEnd))
{
if (m_TimeScopes[m_TimeScopeindex].m_IsLoop)
{
m_BookAndLight.time = Getfps(m_TimeScopes[m_TimeScopeindex].m_TimeStart);
}else
{
m_BookAndLight.Pause();
m_IsCanPlay = false;
}
}
}
}
/// <summary>
/// 计算当前帧率 动画为每秒60帧
/// </summary>
/// <param name="targetfps"></param>
/// <returns></returns>
private double Getfps(double targetfps)
{
return targetfps / 60;
}
}
[Serializable]
public class TimeScopes
{
public double m_TimeStart;
public double m_TimeEnd;
public bool m_IsLoop;
}
代码笔记
追求JN者: 完美解决,感谢博主
avi9111: 不错,有用
SueDaren: 博主,我1.18导入2022会有两个shader报错,咋弄
千忧散: 在Unity中,有时候需要创建文件来存储应用程序的数据或配置信息。以下是一些可能需要创建文件的场景: 保存游戏进度或用户数据:如果需要将游戏进度或玩家的个人信息保存在本地设备上,可以使用Unity提供的文件IO功能来创建和写入文件。 保存应用程序配置:如果你的应用程序需要保存一些配置信息,例如用户的偏好设置、游戏参数等,可以使用文件IO来创建和写入配置文件。 读取外部数据:如果你的应用程序需要读取外部文件(例如地图数据、游戏资源等),可以使用Unity的文件IO功能来创建文件并读取其中的数据。 需要注意的是,在使用Unity的文件IO功能时,需要确保应用程序具有适当的权限来创建和写入文件。此外,频繁地创建和写入文件可能会影响应用程序的性能和电池寿命,因此请谨慎使用。
m0_74837920: 纯小白 想问问大佬为什么要通过代码来控制文件夹的创建,直接在层级窗口不可以实现文件的建立吗?