需要更新DefaultEngine.ini,这里要更新成和OnlineSubSystem Steam的设置
480是默认工程,
付费可以改成自己的
需要更新DefaultEngine.ini,这里要更新成和OnlineSubSystem Steam的设置
480是默认工程,
付费可以改成自己的
变量命名规则
1.使用字母、数字和下划线组成,不能包含特殊符号。
2.不能以数字开头。
3.不能使用关键字。
4.变量区分大小写。
5.推荐使用骆驼命名法。
6.一些变量名不推荐用两个下划线、一个下划线加大写字母、一个下划线开头的变量。
7.推荐使用m_开头来对私有类型变量进行命名以与公有类型变量区分。
接入Steam只能在工程目录右键测试LaunchGame,来启动游戏
GameInstance实例中有
EventNetworkError事件。
官网组件Mark
整型
·short
short整型占用2byte,其值范围为-32,768~32,767。
·int
int整型占用4byte,其值范围为-2,147,483,648~2,147,483,647。
·long
long整型占用4byte,其值范围为-2,147,483,648~2,147,483,647。
·long long
long long整型占用8byte,其值范围为-9,223,372,036,854,775,808~9,223,372,036,854,775,807。
·long int
long int整型占用4byte,其值范围为-2,147,483,648~2,147,483,647。
变量修饰符
char、int变量前可以加变量修饰符,signed和unsigned。该修饰符会对变量的取值范围产生影响,如int类型变量前加入unsigned修饰符时,其取值范围从-2,147,483,648~2,147,483,647变为0~4294967295。
使用new关键字创建数组
使用new关键字创建数组的方式如下:
int* p = new int[elementCount];
整型指针p将指向数组的第一个元素的地址。
可以通过指针名来写入或读取数组的元素,如:
p[0] = 7;
cout << p[0] << endl;
new创建的数组需要使用delete去释放内存,由于数组的连续的若干个地址组成的,所以释放内存操作如下:
delete[] p;
在GameMode相应OnPostLogin的时候,大于当前玩家的数量,则需要踢人
为了让玩家反应过来,需要知道踢人的原因,则不能直接在PostLogin中做踢人处理
模板类array
C++11的标准将使用模板类创建数组,需要引入模板类array和命名空间std,如下:
#include <array>
using namespace std;
int main(){
array<type,elementCount> arrayName = {11,22,33,44};
//type为数据类型,elementCount为元素个数,arrayName为数组名。
}
此方式可以对数组进行赋值操作,将能够将一个数组的元素复制给另一个数组。
Execute ConsoleCommand
来连接到指定服务器
字符类型
字符型char需要用单引号"'"包围。
char型实际上也属于整型,可以通过将字符类型的值赋值给整型变量以得出该结论。这种情况下,字符类型的值会转换成ASCII码。
ASCII码对照表:https://tool.oschina.net/commons?type=4
Gate节点的使用
PrintString
布尔类型
布尔类型变量的值只能是true和false。true为肯定,false为否定。一段逻辑运算符表达式的结果为布尔类型的值,如:
1 <= 2
该表达式的值为false。
将布尔类型的值输出到控制台时,会输出为1(true)或0(false)。
第二次编程练习
#include <iostream>
#include <array>
#include <string>
using namespace std;
struct CandyBar {
string brand;
float weight;
int cal;
};
int main()
{
//1.
array<char, 30> actor1;
char actor2[30]{};
array<float, 13> chuck1;
float chuck2[30]{};
//2.
CandyBar snack{"Mocha Munch", 2.3f, 500};
cout << "Candybar snack's info:\n" << "Name:" << snack.brand
<< "\nWeight:" << snack.weight
<< "g\nKcal:" << snack.cal << "cal." << endl;
//3.
array<float, 3> score;
cout << "Enter three 50-meter sprint results:" << endl;
cin >> score[0];
cout << "Entered." << endl;
cin >> score[1];
cout << "Entered." << endl;
cin >> score[2];
cout << "Number of attempts is " << score.size()
<< ", average score is "
<< (score[0] + score[1] + score[2]) / 3
<< "." << endl;
}
判断技能按键的两种方式:
PlayerController的IsKeyDown
另外一种从BindAction中的回调给参数Key
GameMode 需要使用use seamlesss travel
无缝传送需要控制台的命令
servertravel +地图路径
for循环
循环结构的一种,根据条件重复执行同一段代码,基本结构如下:
for(init; condition; update){
loob body;
}
其中,init部分为初始化一个用来判断条件的整型变量;condition部分为执行loob body的条件;update部分为更新用来判断条件的整型变量;loob body部分为循环体,即重复执行的代码。
初始化部分只会执行一次,然后执行判断部分,如果判断结果为true,则执行一次循环体内的代码;如果判断结果为false,则结束循环。当执行了一次循环体内的代码后,会进入更新部分,更新完成后再进行判断。这个过程将重复执行至判断结果为false才会结束循环。
如果要使用for循环遍历一个数组的所有元素,代码如下:
array<int, 10> testArray;
for(int i = 0; i < testArray.size(); i++){
std::cout << testArray[i];
}
需要slot default插槽才能播放Montage动画
FindSession,
Steam一次最多只能找到50个
Lan默认100个
hostname可以通过c++做