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

如何重置所有挂载PhysicsObjects脚本的物体至初始位置?

批量重置所有挂载PhysicsObjects的物体

直接使用Unity的FindObjectsOfType(旧版本)或FindObjectsByType(Unity 2022.3+)方法,一次性获取场景中所有挂载PhysicsObjects脚本的组件实例,再遍历调用它们的ResetObjects方法即可实现批量重置。

修改后的测试脚本代码

// 替换原单个组件引用,改为数组存储所有目标组件
private PhysicsObjects[] allPhysicsObjects;

private void Start()
{
    // 获取场景中所有激活状态的PhysicsObjects组件
    // Unity 2022.3及以上推荐使用FindObjectsByType
    allPhysicsObjects = FindObjectsByType<PhysicsObjects>(FindObjectsSortMode.None);
    // 旧版本Unity请使用下面这句:
    // allPhysicsObjects = FindObjectsOfType<PhysicsObjects>();
}

// 批量重置方法
public void ResetAllPhysicsObjects()
{
    foreach (var physicsObj in allPhysicsObjects)
    {
        physicsObj.ResetObjects();
    }
}

// 调用示例(可绑定到按钮点击、快捷键或其他触发逻辑)
// ResetAllPhysicsObjects();

补充说明

  • 如果需要包含场景中非激活状态的物体,调用时传入对应参数:
    // Unity 2022.3+
    allPhysicsObjects = FindObjectsByType<PhysicsObjects>(FindObjectsInactive.Include, FindObjectsSortMode.None);
    // 旧版本Unity
    allPhysicsObjects = FindObjectsOfType<PhysicsObjects>(true);
    
  • 若场景物体数量极大,建议在初始化时缓存结果,避免频繁调用FindObjects系列方法影响性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:00:59