zoukankan      html  css  js  c++  java
  • Unity开发笔记-Unity2019使用AssetDatabase.CreateAsset创建TimelineAsset保存不正常的问题

    问题

    当通过AssetDatabase创建TimelineAsset时,Timeline上的Track都丢失了

    下面的代码TimelineAsset不会被正确的创建出来:

      `TimelineAsset timeline = ScriptableObject.CreateInstance<TimelineAsset>();
        timeline.name = "test_timeline";
        
        if (!Directory.Exists(TIMELINE_SAVE_PATH))
        {
            Directory.CreateDirectory(TIMELINE_SAVE_PATH);
        }
        string assetPath =TIMELINE_SAVE_PATH+timeline.name+".playable";
        
    
        timeline.CreateTrack<AnimationTrack>();
        timeline.CreateTrack<AnimationTrack>();
        AssetDatabase.CreateAsset(timeline,assetPath);
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();`
    

    虽然生成完毕,点击查看timeline没有什么问题

    但是
    运行一下Unity,然后再查看timeline,会变成这样


    另外会有报错提示:

    MissingReferenceException: The object of type 'AnimationTrack' has been destroyed but you are still trying to access it.

    我们使用文本编辑器打开这个timeline文件,发现文件确实没有被正确创建

    原因:

    创建track之前,timline需要已经存在于assetdatabase中
    否则track信息会丢失,报错

    解决方法:

    1.先createAsset
    2.再创建timeline上的track

    需要先CreateAsset一个空的TimelineAsset

    上面的代码调换顺序之后如下:

      `
      TimelineAsset timeline = ScriptableObject.CreateInstance<TimelineAsset>();
        timeline.name = "test_timeline";
        
        if (!Directory.Exists(TIMELINE_SAVE_PATH))
        {
            Directory.CreateDirectory(TIMELINE_SAVE_PATH);
        }
        string assetPath =TIMELINE_SAVE_PATH+timeline.name+".playable";
        AssetDatabase.CreateAsset(timeline,assetPath);                        //先将timeline保存到assetdatabase中
        
        AnimationTrack track = timeline.CreateTrack<AnimationTrack>();            //再创建track
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();`
  • 相关阅读:
    Oracle中模拟SQL中的isnull函数
    Delphi:在OnBeforePost事件中取消TDataSet.Post(Delphi: Canceling a TDataSet.Post in an OnBeforePost Event)
    DBGrid的输入焦点控制
    刷新dbgrid 而不失去当前行位置
    MoveTo和MoveBy
    接口及接口测试
    ()文献可视化--vosviewer入门
    给出先序和中序,给一个数找到位置并输出它左子树里最大的数
    Kruskal算法:最小生成树
    Prim算法:最小生成树
  • 原文地址:https://www.cnblogs.com/terrynoya/p/13751663.html
Copyright © 2011-2022 走看看