c# - 在一个场景中更改一个对象会在 2 中更改它
问题描述
我正在使用 Unity,并且我有一个带有平板电脑的场景。我复制了这个场景并更改了一些东西,但除了一些纹理更改之外,它还是相同的场景。在第二个场景中,我将平板电脑上的动画更改为不同的动画,效果很好。但回到第一个场景,我发现它改变了两个场景的动画。我有很多引用平板电脑对象和脚本名称的脚本,所以有什么方法可以解决这个问题,而不必重新制作平板电脑和所有脚本?我没有对象预制件。而且动画完全不同。唯一共享的是对象名称和脚本。
解决方案
为了解决您的问题,您需要为每个平板电脑制作两个不同的动画。
假设您将动画 1 应用于平板电脑 1,您复制所有内容,现在您拥有带有动画 1 的平板电脑 2,如果您在处理场景 2(使用平板电脑 2)时编辑动画 1,场景 1(使用平板电脑 1)将自动受到影响,因为它也指的是相同的动画 1
所以你需要做的是: - 制作两个单独的动画:动画 1 和动画 2 - 为每个平板电脑分配不同的动画
最后,您可以应用两种方法:
- 在您的代码中,您需要创建一个字段,允许您控制触发/使用哪个动画或动画控制器(google it)
或者
- 您可以在一个控制器上添加两个动画剪辑并控制一个布尔值(或整数),它将选择触发哪一个,如下图所示:
然后,转到动画师,右键单击并添加空状态,然后右键单击它并设置为图层默认状态链接到您拥有的两个动画
转到参数-> 添加一个新的布尔值,使一个转换为真,另一个为假
最后,您可以在代码中执行以下操作:
添加public bool animationtype
您可以从检查器控制(如果将其设置为 true 动画 1 将播放,如果 false 动画 2 将播放),您可以使用:
whatevername.SetBool("whatevername", animationtype);
如果您有两个以上的动画,请考虑使用整数而不是布尔值。
推荐阅读
- javascript - 网址生成器功能
- go - 调试时如何在 Visual Studio Code 中查看全局变量?
- python - 无法模拟从另一个类继承的类(创建/使用单例对象)
- sql - 编写 SQL INSERT 从两个独立的相关行中检索其数据
- popup - tvOS 上的 Toast/弹出窗口
- cordova - Meteor/Cordova:帐户密码在登录/注册时破坏应用程序
- java - 如何修复“App Engine SDK 已过期”?
- javascript - 如何使用 javascript 或 jquery 在程序上调整具有像素精度的媒体查询?
- angular - 升级到最新版本后,ng-select 下拉菜单在 UI 上中断 - Angular 6
- java - 使用 Spring Security 保存多部分表单数据给出错误 HTTP 状态 405 - 不支持请求方法“POST”