Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 812e45e

Browse files
Create AnimationClipListImporter.cs
1 parent 3039e53 commit 812e45e

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// Checks for a .txt file with the same name as an imported .fbx file (in Assets/Models/ folder), containing a list of animation clips to add to the ModelImporter.
2+
// .txt file should be tab-delimited with the following columns: "title", "start frame", "end frame" (and optional description, not used).
3+
// example:
4+
// Take0 10 40 asdf
5+
// Take1 50 80 wasdf..
6+
7+
using System;
8+
using System.IO;
9+
using System.Collections.Generic;
10+
using UnityEngine;
11+
using UnityEditor;
12+
13+
namespace UnityLibrary.Importers
14+
{
15+
public class AnimationClipListImporter : AssetPostprocessor
16+
{
17+
void OnPreprocessModel()
18+
{
19+
ModelImporter modelImporter = assetImporter as ModelImporter;
20+
if (modelImporter == null) return;
21+
22+
string assetPath = assetImporter.assetPath;
23+
if (!assetPath.StartsWith("Assets/Models") || !assetPath.EndsWith(".fbx", StringComparison.OrdinalIgnoreCase)) return;
24+
25+
string txtPath = Path.ChangeExtension(assetPath, ".txt");
26+
if (!File.Exists(txtPath)) return;
27+
28+
try
29+
{
30+
List<ModelImporterClipAnimation> clips = new List<ModelImporterClipAnimation>();
31+
string[] lines = File.ReadAllLines(txtPath);
32+
33+
foreach (string line in lines)
34+
{
35+
string[] parts = line.Split('\t');
36+
if (parts.Length < 3) continue; // Ensure we have at least "title, start, end"
37+
38+
string title = parts[0].Trim();
39+
if (!int.TryParse(parts[1], out int startFrame) || !int.TryParse(parts[2], out int endFrame))
40+
continue;
41+
42+
ModelImporterClipAnimation clip = new ModelImporterClipAnimation
43+
{
44+
name = title,
45+
firstFrame = startFrame,
46+
lastFrame = endFrame,
47+
loopTime = false
48+
};
49+
50+
clips.Add(clip);
51+
}
52+
53+
if (clips.Count > 0)
54+
{
55+
modelImporter.clipAnimations = clips.ToArray();
56+
Debug.Log($"Added {clips.Count} animation clips to {assetPath}");
57+
}
58+
}
59+
catch (Exception ex)
60+
{
61+
Debug.LogError($"Failed to process animation data for {assetPath}: {ex.Message}");
62+
}
63+
}
64+
}
65+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /