UE4学习-阶段性总结1
首先说说GameMode,GameState,PlayerController:
共同点:
里面的变量都是全局变量,这是与蓝图类的一个很大的区别;
并且里面包含了EventBeginPlay/EventTick等与关卡蓝图的类似的方法;
不同点:
GameMode:是规定了游戏运行的一个环境,里面的全局变量大都在本地调用;
GameState:里面定义的全局变量大都用于网络数据的传输;
PlayerController:里面的全局变量大都用于各个蓝图类之间的数据调用,这样说它与GameMode类似,但其实他们俩起到的作用是完全不一样的;它会赋予一定的控制能力给指定的PlayerStart,下面第5点。
最下面的那个图是一个GameMode的设置面板
1、蓝图可以看成是Unity的Prefab,但却比Unity的Prefab强大太多。
2、每个物体都有自己的编辑界面,不仅仅是蓝图,包括导入的资源,如果一个大模型上有很多组件,那么可以在模型的根模型上设置锚点,使子模型的坐标归0时保持整体的一个正常显示。实际操作是模型的SocketManager功能。
3、GameMode是规定游戏运行的一个环境,里面的全局变量大都数是在本地调用。
如果你要使用一个自己的GameMode,而不是UE默认的,设置方法是:
先创建一个蓝图,继承自GameModeBase,然后
Edit - project Settings - [Project-Maps & Modes] -Default Modes - "Default GameMode",再选择自己创建的GameModel。
4、创建一个蓝图BP_Tank,可以默认继承自Actor,或者Pawn都行。
如果你要更改它的继承,修改方法是:
双击这个蓝图,找到ClassSettings,然后更改ClassOptions下的ParentClass选项。
5、PlayerStart:玩家出生点,出生点想要出生什么,在下图的Default Pawn Class里选择,但这个东西必须是继承Pawn的,如果一个坦克,继承了Pawn,然后我们在这里选择坦克的脚本,则在这个出生点会出生一个坦克,并且会默认绑定游戏所使用的PlayerController。
6、PlayerController:下图中选择PlayerController,出生点物体的控制器,只有一个。
然后我们回到蓝图创建的物体上来,我们说说怎么绑定脚本。
绑定基对象:相当于Unity的transform,如果我们创建一个继承自Pawn的C++类Tank在蓝图上选择Class Settings的ClassOptions中的ParentClass,然后选择Tank,则完成Tank脚本和蓝图的绑定,这个Tank的C++类需继承自Pawn,可以理解为相当于unity的Gameobject,否则是无法选择绑定的。
绑定控制器:比如如下图的这个蓝图,选择红圈内的选项,会出现Details面板(在Unity里面相当于是检视面板),然后选我们看到Pawn节点下的AIControllerClass,然后我们选择自己来操作这个蓝图对象的控制器,这个控制器必须继承自AIController,否则我们是无法绑定的。
7、基于脚本的开发说明
创建一个继承自Pawn的C++类后会在解决方案里生成Tank.h和Tank.cpp,但类名为变成ATank,这是UE4的一个命名规则,无需纠结这个东西,这是约定规则。
暂时就写到这里。