间歇泉高端调试,手动喷发
1.显示排放时间实现方法
Geyser.InitializeStates
找到下面这句
this.erupt.erupting.EventTransition(GameHashes.EmitterBlocked, this.erupt.overpressure, (Geyser.StatesInstance smi) => smi.GetComponent<ElementEmitter>().isEmitterBlocked).PlayAnim("erupt", KAnim.PlayMode.Loop);
在末尾分号前加上.ToggleMainStatusItem(Db.Get().MiscStatusItems.SpoutEmitting, null)
由于时间大于某个值就会改成显示周期,对精准观测时间不直观,所以将其改成秒来显示。(看需求可改可不改)
来到MiscStatusItems.SpoutEmitting
str = str.Replace("{StudiedDetails}", MISC.STATUSITEMS.SPOUTEMITTING.STUDIED.text.Replace("{Time}", GameUtil.GetFormattedCycles(statesInstance2.master.RemainingEruptTime(), "F1", false)));
该成
str = str.Replace("{StudiedDetails}", MISC.STATUSITEMS.SPOUTEMITTING.STUDIED.text.Replace("{Time}", Math.Truncate((double)statesInstance2.master.RemainingEruptTime()).ToString() + "秒"));
2.点击按钮从闲置期跳过,进行整个完整周期中的闲置和休眠切换
首先要把分析完成按钮变成可点,
Studyable.SidescreenButtonInteractable
return !this.studied;
改成
return true;
使其一直可点击,不直就不可点。
.
然后自己写一个跳过时间的方法
Geyser里编辑类添加下面方法
public void JumpNext()
{
if (base.smi.IsInsideState(base.smi.sm.dormant))//判断是不是休眠
{
this.AlterTime(this.timeShift - (this.configuration.GetYearOnDuration() + this.configuration.GetYearOffDuration()), false);//重置循环时间
return;
}
this.AlterTime(this.timeShift + this.RemainingNonEruptTime(), false);//跳过闲置时间
}
准备工作做完了那就是最后一步
Studyable.ToggleStudyChore
在if (DebugHandler.InstantBuildMode)的上一行添加下面这个判断
if (this.studied)//如果泉是分析完成的
{
base.GetComponent<Geyser>().JumpNext();//执行跳过闲置时间
return;
}
好了现在保存进游戏,将泉分析完成,在非喷发期点击分析完成按钮即可调试喷发。喷发期反复点击则无效。
.
虽然游戏自带调试泉我就不用,诶我就要自己写
在哪呢ShiftTimeTo
DevToolGeyserModifiers.RenderTo
页:
[1]