You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中导入的自定义3D模型无法通过脚本协程Lerp移动的问题

问题根源与解决方法

核心问题是你操作错了对象:Resources.Load加载的是预制体资源,Instantiate(myObj)会生成一个场景内的克隆实例,但你没保存这个实例,反而去修改原始预制体的位置。后续移动协程如果还是操作myObj,那改的是资源文件,不是场景里显示的那个模型,所以看起来没动。

修正后的代码

private GameObject myObjInstance; // 保存场景中的实例对象

void Start()
{        
    GameObject prefab = Resources.Load<GameObject>(path_to_model);
    myObjInstance = Instantiate(prefab); // 保存实例
    myObjInstance.transform.position = new Vector3(1.5f, 0, 2.3f); // 修改实例的位置
}

// 示例移动协程
IEnumerator MoveObject()
{
    Vector3 targetPos = new Vector3(5f, 0, 5f);
    float duration = 2f;
    float elapsedTime = 0f;
    Vector3 startPos = myObjInstance.transform.position;

    while(elapsedTime < duration)
    {
        elapsedTime += Time.deltaTime;
        float t = elapsedTime / duration;
        myObjInstance.transform.position = Vector3.Lerp(startPos, targetPos, t);
        yield return null;
    }
}

为什么基础几何体测试有效

你用基础几何体测试时,要么是直接把脚本挂载在场景中的几何体上(操作的是自身),要么是正确保存了实例对象,没有出现“操作预制体而非场景实例”的错误。

内容的提问来源于stack exchange,提问作者alcor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:53:18