taptap制造使用星火模型动画小技巧
02/14330 浏览开发心得
之前尝试使用taptap制造素材库,发现经常有模型无贴图、动画播放不成功等问题。
今天就整理下,前面研究成功的星火怪物模型加载与动画播放小技巧

星火素材库模型加载方法
第一步:搜索模型,确认资源类型
优先选 type=“prefab” 的资源,这是唯一能自动带贴图的方式。
第二步:根据类型选择加载方式
local PREFAB_UUID = "G4wooYs70lk6oNbiOh_VzRkC"
local modelNode = parentNode:CreateChild("ModelNode")
-- 加载 prefab XML(自动包含材质贴图)
local prefabFile = cache:GetResource("XMLFile", "uuid://" .. PREFAB_UUID)
if prefabFile then
modelNode:LoadXML(prefabFile:GetRoot())
end
-- 在节点树中查找 AnimatedModel(可能在子节点上)
local animModel = modelNode:GetComponent("AnimatedModel")
if not animModel then
for i = 0, modelNode:GetNumChildren(false) - 1 do
local child = modelNode:GetChild(i)
animModel = child:GetComponent("AnimatedModel")
if animModel then break end
end
end
第三步:动画
动画 UUID 从 animation_data.animations_data 中获取
与资源类型无关,都用 uuid:// 直接播放:
AnimationController 必须和 AnimatedModel 在同一节点
local animModelNode = animModel.node
local animCtrl = animModelNode:GetOrCreateComponent("AnimationController")
-- 播放动画
animCtrl:PlayExclusive("uuid://EhkjydJVXUCN2VNluMLKYZaa", 0, true, 0.2)
第四步:自动缩放
local size = animModel.boundingBox.size
local targetHeight = 1.5 -- 目标高度(米)
if size.y > 0.01 then
local s = targetHeight / size.y
modelNode:SetScale(Vector3(s, s, s))
end
完整流程速查
1. search_3d_resource 搜索模型
↓
2. 检查返回的 type 字段
↓
prefab ──→ GetResource("XMLFile") → LoadXML(带贴图)
↓
3. FindAnimatedModel() 查找模型组件
↓
4. AutoScale() 缩放到目标高度
↓
5. AnimationController 放在 AnimatedModel 同节点
↓
6. 用 animation_data 中的 UUID 播放动画
↓
7. 构建测试


