Unity3d 在运行期间更改unity项目设置
我刚刚开始使用unity,我正在查看其他人的项目,了解它是如何工作的,而不是在没有任何知识的情况下直接进入自己的项目。我正在试验一个来自其他人github的unity项目,我一直很喜欢在游戏运行时操纵游戏设置,但我只是通过在unity项目编辑器(如果它叫inspect边栏)中播放场景来做到这一点。我希望在我建造和运行之后也能这样做,以获得更好的视野。有没有一种方法可以继续使用设置板,或者有没有一种方法可以将它们转换成游戏中的变量,我可以通过某种方式进行更改 下面是我从中获取代码的github:Unity3d 在运行期间更改unity项目设置,unity3d,Unity3d,我刚刚开始使用unity,我正在查看其他人的项目,了解它是如何工作的,而不是在没有任何知识的情况下直接进入自己的项目。我正在试验一个来自其他人github的unity项目,我一直很喜欢在游戏运行时操纵游戏设置,但我只是通过在unity项目编辑器(如果它叫inspect边栏)中播放场景来做到这一点。我希望在我建造和运行之后也能这样做,以获得更好的视野。有没有一种方法可以继续使用设置板,或者有没有一种方法可以将它们转换成游戏中的变量,我可以通过某种方式进行更改 下面是我从中获取代码的github:
请注意,一般来说,并不是每个人都有克隆git项目的雄心壮志,只是为了弄清楚您到底想要什么以及如何实现;) 还要注意,称这些为“项目设置”是极其误导的在Unity中是完全不同的事情,通常在构建应用程序之前只在编辑器中更改 您最可能引用的设置只有三个实例
A
、B
和C
,它们都是
公共类SlimeSettings:ScriptableObject
{
[标题(“模拟设置”)]
[Min(1)]公共int-stepsPerFrame=1;
公共整数宽度=1280;
公共内部高度=720;
公共整数=100;
public Simulation.spawn模式spawn模式;
[标题(“轨迹设置”)]
公共浮式拖车重量=1;
公共浮点数十年=1;
公共浮动扩散器=1;
公共物种设置[]物种设置;
[系统可序列化]
公共结构规范设置
{
[标题(“移动设置”)]
公共交通速度;
公共浮动转速;
[标题(“传感器设置”)]
公共浮标间距;
公共浮动汇率;
[Min(1)]公共尺寸;
}
}
然后在组件模拟中引用
公共类模拟:单一行为
{
...
公共瘦身设置;
...
}
现在有点不清楚你到底想要实现什么,但我可以想象两件可能的事情
- 您希望在运行时交换引用的设置资源
例如,您可以使用一个额外的控制器组件,如
[RequireComponent(typeof(simulation))]
公共类设置:单行为
{
[SerializeField]私有模拟\u模拟;
[序列化字段]私有列表所有设置;
私有内部电流;
私有void更新()
{
//例如,每次按空格键时,只需转到下一个设置
if(Input.GetKeyDown(KeyCode.Space))
{
如果(!\u simulation)\u simulation=GetComponent();
_当前=(\u当前+1)%AllSettings.Length;
_simulation.settings=AllSettings[_current];
}
}
}
- 或者您想要的实际上是更改当前资产的值(请注意,在编辑器中,ScriptableObjects中的此类更改将是持久的!)
您可以像以前一样在单独的脚本中执行此操作,例如
//以某种方式获取对组件的引用,例如。
var模拟=GetComponent();
//获取当前引用的设置资源引用
var设置=simulation.settings;
//不要做任何你想做的改变
settings.spawnMode=Simulation.spawnMode.RandomCircle;
请注意,显然,这些设置中的大多数只在开始时影响一次,之后是否更改也无关紧要,因此每次更改时都需要以某种方式重新初始化模拟,如果这正是您试图实现的设置。您到底在谈论哪些设置?在构建…@derHugo之后,它们中的大多数都没有意义进行更改。在项目的settings文件夹中,有一个c#monoscript,其中包含诸如对象速度等变量以及类似的内容。