欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

UE4入门笔记

程序员文章站 2022-04-15 23:39:45
UE4入门学习笔记 1,与processing编程语言对比学习Processing和UE4自己对UE4和面对对象的理解对比操作(创建类)对比操作(实例化一个对象)实战部分,用UE4制作一个火把类实战部分,编辑火把类蓝图Processing和UE4processing是一门基于java的面对对象编程语言,有关于oop的封装继承和多态的概念,同时ide简洁易用,适合入门编程以及了解oop(面对对象)UE4不多说,其蓝图的很多概念在学习过程中发现与C++的概念类似,c++也是一门面对对象语言,因此想到可以对...

Processing和UE4

processing是一门基于java的面对对象编程语言,有关于oop的封装继承和多态的概念,同时IDE简洁易用,适合入门编程以及了解oop(面对对象编程)。
UE4不多说,其蓝图的很多概念在学习过程中发现与C++的概念类似,c++也是一门面对对象语言,因此想到可以对比学习,用简单的Processing去理解C++的很多概念(并不能代替c++制作游戏,只是方便理解oop的概念)。

自己对UE4和面对对象的理解

ue4中的actor,相当于一个class(类),每次从ue4中的列表拖拽一个actor,相当于创建了actor的一个实例(对象),这是面对对象(oop)编程的基础概念,对于actor类,可以自己编写一个父类actor,属于虚幻4引擎actor的子类,也是拖拽的对象的类,一个类可以有很多变量和函数,这个类的每一个对象(实例),都拥有类的变量和函数。
虚幻引擎中无论控制器(Controller),玩家角色(Character),可控制单位(Pawn)游戏模式(Game Mode)都是继承自Actor类。
OOP三个特征,封装 继承 多态,这里主要讲的是继承
UE4入门笔记

***相当于一个actor是一个模板,每次拖拽到游戏视口,就是用这个模板生产了一个新产品。 ***

对比操作(创建类)

在ue4里创建一个蓝图类,选择actor类,进入actor编辑界面,左边栏有很多按钮,可以添加组件(Component),添加变量,函数等,其中组件也可以当成一个类,在组件里面,一类组件由一个父类控制(有三角形的组件),对父类A的操作会影响子类Aa,子类a和其他父类BC的操作不会影响父类,其中组件根(Root)是最大的父类,他的操作影响所有子类,类似祖宗。
声明变量和函数,点击add variable即可操作,变量类型有很多(整数int,浮点数,布尔值,字符串等),也可以将某个返回值或者对象当作变量,未赋值的变量在点击编译的时候可以赋值。
UE4入门笔记
cylinder此时是根节点的子类,和ParticleSystem同属,而Pointlight是ParticleSystem的子类
UE4入门笔记
默认的所有变量是private,点击闭着的眼睛可以改成pubilc

在Processing里操作

class Actor
{
  private float a;   //声明私有变量浮点数a
  public int b;     //声明公共变量整数b
  boolean c; //声明布尔值c
  String s;  //声明字符串s
  Actor()   //在里面进行赋值操作
  {
  a=10.1f;
  b=100;
  c=true;
  s="ue4";
  }
}

对比操作(实例化一个对象)

在ue4里很简单,拖到视口,会自动创建一个对象,名字可以在世界大纲(右上角)找到

在Processing里操作,需要先声明类和对象,然后在setup里面实例化

ArrayList<Actor>actors=new ArrayList<Actor>();       //声明对象数组
void setup()
{
actors.add(new Actor()); //实例化
}

实战部分,用UE4制作一个火把类

首先创建新类,命名为Fire_BP,点击add component,创建一个static mesh组件并且选择cylinder,创建一个粒子系统并选择火,创建一个点光源
结构如下,粒子系统本身无光源,需要自己加上点光源,并且放在粒子系统下1,这样改变粒子系统的属性(Location,rotate,scale)时,同样改变其发出的光源位置,选择和坐标。
编译后保存

UE4入门笔记
UE4入门笔记拖到视口就可以看到火把类的实例,点击此火把可以在世界大纲中看到这个对象的名字,也可以右键浏览火把类的在content里的具体位置

实战部分,编辑火把类蓝图

打开火把类的蓝图,会看到3个节点(Node);

UE4入门笔记beginplay ://这里面的函数在程序运行时执行1次
beginOverlap ://在每次与其他对象重叠时运行
eventTick ://每帧运行

对比Procssing:

void setup()
{
//这里面的函数在程序运行时执行1次,然后便跳过
}
void draw()
{
//这里面的函数在程序运行时每帧执行1次
}

蓝图如图,运行结果是火把一闪一闪

UE4入门笔记

processing实现以及结果(省去了声明部分)

class pointlight{         
 pointlight()
 {

 }
void setIntensity(float intensity)        //对应setIntensity蓝图![在这里插入图片描述](https://img-blog.csdnimg.cn/20200715124903571.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NrcmxsaXU=,size_16,color_FFFFFF,t_70)
{
println("s后火把强度为"+intensity);
}
}
void draw()
{
  float delayTime=random(0.2, 1.0);         //对应delay的duration参数
  float intensity=floor(random(0,3000));    //对应setIntensity的new intensity参数
  delay(int(delayTime*1000));               //对应delay蓝图
  print(delayTime);                      
  pointlights.setIntensity(intensity);      //对应最后一个蓝图,对Pointlight的引用
}

UE4入门笔记

本文地址:https://blog.csdn.net/skrlliu/article/details/107346289