经过前几节的学习,估计大家对Procedure与Fsm已经有了一定的了解,下面我们对Procedure进行初步的深入(说的有点大,就是看源码)
首先有几个问题是我比较困惑的:
1. Game Framework -> Procedure ->Procedure Component 下的各个继承自ProcedureBase的子类,是如何生成的?
跟随镜头,首先参观一下ProcedureComponent,没错,这就是我们在IDE中看到的那个脚本
[SerializeField]
private string[] m_AvailableProcedureTypeNames = null;
[SerializeField]
private string m_EntranceProcedureTypeName = null;
这两个参数,从字面意思就可以看出,m_AvailableProcedureTypeNames 为当前有效的Procedure,m_EntranceProcedureTypeName 也就是我们运行游戏第一个进入的Procedure。
然后本人看了一遍代码后,发现并没有实际能够取出所有Procedure的子类的东东,这是为何?最大函数也就是Start,这个我们后续再讲。(全局搜索吧!!m_AvailableProcedureTypeNames )
发现了ProcedureComponentInspector这个代码里竟然出现了!!(什么鬼?)
主意两个函数:
protected override void OnCompileComplete()
{
base.OnCompileComplete();
RefreshTypeNames();
}
private void OnEnable()
{
m_AvailableProcedureTypeNames = serializedObject.FindProperty("m_AvailableProcedureTypeNames");
m_EntranceProcedureTypeName = serializedObject.FindProperty("m_EntranceProcedureTypeName");
RefreshTypeNames();
}