【问题标题】:Is there a way to write part of script specific to a scene in unity3d有没有办法在unity3d中编写特定于场景的部分脚本
【发布时间】:2017-08-24 16:20:15
【问题描述】:

我已经搜索了 2 到 3 天,但找不到任何解决方案。

我真正想要的是,将每个场景统一视为 github/bitbucket 中的分支功能,以便我可以更改特定脚本中的某些部分代码行,以针对不同的场景以不同的方式工作。

如果我在游戏中更改场景,我希望我的游戏加载特定于该场景的脚本。

例如:有一个名为 xyz.cs 的脚本

如果我的游戏正在玩场景 1,xyz.cs 中的某些代码行会发生变化。 如果我的游戏是在玩scene2,xyz.cs中的一些代码行变化可能和上面的scene lines不一样。

基本上git的分支功能在我的游戏中统一到场景(作为分支)。

谢谢。

【问题讨论】:

  • 为什么不在 git 中使用分支?乍一看,这似乎是您将问题复杂化了。
  • 如果这不是关于版本控制的问题,并且您希望类似的脚本根据场景具有略微不同的实现,我会考虑使用抽象类或接口并拥有一个继承它的类每个场景。
  • 如上所述,一个名为 SceneAbstract 的类具有抽象方法(和实现的方法),然后是 Level1:SceneAbstract 等子类。

标签: c# git unity3d github


【解决方案1】:

在 git 中管理统一项目是可以的。但是是否在不同的分支中管理每个场景,这取决于您的需求和情况:

  • 如果每个场景中的.cs文件需要时时更改,您可以在git的不同分支中管理每个场景,它可以帮助您分别跟踪不同场景的每个版本。
  • 如果.cd文件对于每个场景都是不变的,你可以在同一个分支中管理不同的场景,使用Sam在评论中所说的方式。

如果您在不同的分支中管理每个场景,您应该为每个分支保留.cs 文件的实体(不是脚本的一部分)。但是您可以根据需要根据其他场景更改.cs 文件。

如你想根据scene1中的文件xyz.cs更改scene2中的xys.cs文件,可以使用以下命令:

# On scene2 branch
git checkout scene1 xyz.cs
# the xyz.cs in scene2 branch will be same as scene1
# change the part you want to modify
git add .
git commit -m 'change part of xyz.cs file in scene2 branch'

【讨论】:

  • 是的,谢谢,但我说的是游戏中的相同场景。如果我更改游戏中的场景,则应加载新更改的脚本。我希望在我的游戏中为场景提供 git 分支功能。
  • 所以您的问题与使用 git 来统一版本控制无关,而是在场景更改后如何加载更新的脚本(您可以尝试针对该问题编写脚本 API)。您可以删除标签version-control,以便更好地描述和理解您的问题。
猜你喜欢
  • 2022-01-27
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-29
  • 1970-01-01
相关资源
最近更新 更多