同步加载 同步加载会造成进程阻塞. FObjectFinder / FClassFinder 在构造函数加载 ConstructorHelpers::FObjectFinder ConstructorHelpers::FClassFinder 参考 [UE4 C++ 基础知识]<10>资源的引用 LoadObject 一般用来加载资源对象 UMaterial* M_Cube = LoadObject<UMaterial>(nullptr, TEXT("Material'/…
基本数据类型 TCHAR TCHAR就是UE4通过对char和wchar_t的封装 char ANSI编码 wchar_t 宽字符的Unicode编码 使用 TEXT() 宏包裹作为字面值 TCHAR* TCharString = TEXT("Hello, World!"); // 引擎字符串(TCHAR*) -> ANSI字符串(char*) char* CharString = TCHAR_TO_ANSI(TCharString); // 引擎字符串(TCHAR*) ->…
概述 UE4里,提供的多线程的方法: 继承 FRunnable 接口创建单个线程 创建 AsyncTask 调用线程池里面空闲的线程 通过 TaskGraph 系统来异步完成一些自定义任务 支持原生的多线程 std::thread 在GameThread线程之外的其他线程中 不要 spawning / modifying / deleting UObjects / AActors 不要使用定时器 TimerManager 不要使用任何绘制接口,例如 DrawDebugLine,然有可能崩溃 如果…
2种引用方式 硬引用(Hard Reference) 即对象 A 引用对象 B,并导致对象 B 在对象 A 加载时加载 硬引用过多会导致运行时很多暂时用不到的资源也被加载到内存中 大量资源会导致进程阻塞,致使程序情动事件过长 用不大的资源也在内存中,会占用内存 软引用(Soft Reference) 即对象 A 通过间接机制(例如字符串形式的对象路径)来引用对象 B 软引用可以减少加载负担,可以缩短程序启动时间 软引用不会主动加载到内存中,在需要时加载,用完释放 蓝图中的资源引用 C++ 中资源…
需求说明:深度学习FPGA实现知识储备 来自:http://blog.csdn.net/stdcoutzyx/article/details/41596663 说明:图文并茂,言简意赅. 自今年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural Network,CNN),期间配置和使用过theano和cuda-convnet.cuda-convnet2.为了增进CNN的理解和使用,特写此博文,以其与人交流,互有增益.正文之前,先说几点自己对于CNN的感触.先明确一…
概述 TArray 是UE4中最常用的容器类.其速度快.内存消耗小.安全性高. 其设计时未考虑扩展问题,因此建议在实际操作中勿使用 新建(new) 和 删除(delete) 创建或销毁 TArray 实例 TArray元素为数值类型时,被销毁时其中的元素也将被销毁.若在另一TArray中创建TArray变量,其元素将复制到新变量中,且不会共享状态. 创建 TArray<int32> IntArray; 添加元素 init 填充多个相同值 IntArray.Init(10, 5); //==&g…
概述 TMap主要由两个类型定义(一个键类型和一个值类型),以关联对的形式存储在映射中. 将数据存储为键值对(TPair<KeyType, ValueType>),只将键用于存储和获取 映射有两种类型:TMap 和 TMultiMap TMap 中的键是唯一的 TMultiMap 可存储多个相同的键 TMap 也是值类型,支持通常的复制.赋值和析构函数运算,以及它的元素的强所有权.在映射被销毁时,它的元素都会被销毁.键和值也必须为值类型. TMap 是散列容器,这意味着键类型必须支持 GetT…
概念 定义 UE4中的delegate(委托)常用于解耦不同对象之间的关联:委托的触发者不与监听者有直接关联,两者通过委托对象间接地建立联系. 监听者通过将响应函数绑定到委托上,使得委托触发时立即收到通知,并进行相关逻辑处理. 委托,又称代理,本质是一个特殊类的对象,它内部可以储存(一个或多个)函数指针.调用参数和返回值. 蓝图示例 声明委托 委托签名声明可存在于全局范围内.命名空间内.甚至类声明内.此类声明可能不在于函数体内 可以是返回一个值的函数. 最多4个"载荷"变量. 最多8个…
1.线程的概念 单核CPU的计算机中,一个时刻只能执行一条指令,操作系统以“时间片轮转”的方式实现多个程序“同时”运行.操作系统以进程(Process)的方式运行应用程序,进程不但包括应用程序的指令流,也包括运行程序所需的内存.寄存器等资源.因为交替时间很短(一般只有几十毫秒),人们根本感觉不到如此短暂的停顿,所以在表面上看来就像多个工作同时进行似的.因此进程在宏观上是并发进行的,在微观上是交替进行的. 后来出现了多线程技术(Multi-threading),可以通过在一个进程中创建多个线程(T…
UFunction声明 UFunction 是虚幻引擎4(UE4)反射系统可识别的C++函数.UObject 或蓝图函数库可将成员函数声明为UFunction,方法是将 UFUNCTION 宏放在头文件中函数声明上方的行中.宏将支持 函数说明符 更改UE4解译和使用函数的方式. 可利用函数说明符将UFunction对蓝图可视化脚本图表公开,以便开发者从蓝图资源调用或扩展UFunction,而无需更改C++代码.在类的默认属性中,UFunction可绑定到委托,从而能够执行一些操作(例如将操作与用…
概述 TSet是一种快速容器类,(通常)用于在排序不重要的情况下存储唯一元素. TSet 类似于 TMap 和 TMultiMap,但有一个重要区别:TSet 是通过对元素求值的可覆盖函数,使用数据值本身作为键,而不是将数据值与独立的键相关联. TSet 可以非常快速地添加.查找和删除元素(恒定时间).默认情况下,TSet 不支持重复的键,但使用模板参数可激活此行为. TSet 也是值类型,支持常规复制.赋值和析构函数操作,以及其元素较强的所有权.TSet 被销毁时,其元素也将被销毁.键类型也必…
概述 TaskGraph 系统是UE4一套抽象的异步任务处理系统 TaskGraph 可以看作一种"基于任务的并行编程"设计思想下的实现 通过TaskGraph ,可以创建任意多线程任务, 异步任务, 序列任务, 并行任务等,并可以指定任务顺序, 设置任务间的依赖, 最终形成一个任务图, 该系统按照设定好的依赖关系来分配任务图中的任务到各个线程中执行, 最终执行完整个任务图. TaskGraph适合简单的任务或者想实现有依赖关系的线程,复杂的任务推荐使用 Runnable 或者 Asy…
基本概念 UE4 对 UObject 对象提供垃圾回收 UE4 对原生对象不提供垃圾回收,需要手动进行清理 方式 malloc / free new / delete new与malloc的区别在于,new在分配内存完成之后会调用构造函数. 缺点 如果不及时清理,则会占用内存,或者导致内存泄漏 如果不小心提前清理,则会导致野指针 UE4 提供共享指针库来管理内存,它是C++11智能指针的自定义实现 分类 TSharedPtr UniquePtr TWeakPtr TSharedRef 优点 防止…
C预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤.简言之,C预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理. 所有的预处理器命令都是以井号(#)开头.它必须是第一个非空字符,为了增强可读性,预处理器指令应从第一列开始. (1) 预处理器实例 // 包含一个源代码文件(从系统库中获取 stdio.h,并添加文本到当前的源文件中) #include <stdio.h> // 定义宏(把代码中所有的FILE_SIZE替换为20) #define…
枚举 UENUM宏搭配BlueprintType可以将枚举暴露给蓝图,不使用的话,仅能在C++使用 //定义一个原生enum class enum class EMyType { Type1, Type2, Type3, }; UENUM(BlueprintType) enum class ECurrentState : uint8 { Idle UMETA(DisplayName="空闲"), Attack UMETA(DisplayName="攻击"), Rol…
概念 AsyncTask AsyncTask 系统是一套基于线程池的异步任务处理系统.每创建一个AsyncTas,都会被加入到线程池中进行执行 AsyncTask 泛指 FAsyncTask 和 FAutoDeleteAsyncTask,一般声明为友元函数,FNonAbandonableTask 派生类作为模板 FNonAbandonableTask 是要继承的基类,不可被终止的任务,可以看作是任务执行体的抽象 FAsyncTask 模板类 DoWork() 实现具体任务,自定义类作为模板参数…
JavaScript中间if声明: <span style="font-size:18px;"><HTML> <HEAD> <TITLE>Hello World</TITLE> </HEAD> <BODY BGCOLOR="WHITE"> <SCRIPT Language="JavaScript" TYPE="text/javascript&quo…
属性声明 属性使用标准的C++变量语法声明,前面用UPROPERTY宏来定义属性元数据和变量说明符. UPROPERTY([specifier, specifier, ...], [meta(key=value, key=value, ...)]) Type VariableName; 示例:位掩码 UENUM(BlueprintType) enum class EColorBits1 :uint8 { ECB_Red, ECB_Green, ECB_Blue, }; //使用"bitflags…
概述 简单的说,接口提供一组公共的方法,不同的对象中继承这些方法后可以有不同的具体实现. 任何使用接口的类都必须实现这些接口. 实现解耦 解决多继承的问题 蓝图使用 使用方法 三种调用方法的区别 调用流关卡蓝图的接口函数 C++ 使用接口 本例使用一个Box Trigger 出发overlap 调用 Drone实例的接口 添加接口类 定义接口 声明蓝图可调用接口函数 用UFUNCTION 宏 BlueprintCallable 声明蓝图可调用,还必须使用 BlueprintImplementab…
一.基础知识考察 1.引用变量的概念及定义方式——引用变量的原理 2.常量及数据类型——字符串的三种定义方法及各自的区别 3.运算符的使用——错误控制符.运算符优先级 4.流程控制操作 5.自定义函数和内部函数的使用 6.正则表达式的使用 7.文件读取/写入操作——目标操作函数.其它文件操作 8.会话控制技术——原因.cookie\session 9.面向对象——面向对象的封装(成员访问权限).继承(单一继承.方法重写)和多态(抽象类的定义.接口的定义).设计模式 10 .网络协议——状态码的含…
[源码下载] 背水一战 Windows 10 (63) - 控件(WebView): 基础知识, 加载 html, http, https, ms-appx-web:///, embedded resource, ms-appdata:///, ms-local-stream:// 作者:webabcd 介绍背水一战 Windows 10 之 控件(WebView) 基础知识 加载指定的 html 加载指定的 url(http, https, ms-appx-web:///, embedded…
[源码下载] 背水一战 Windows 10 (78) - 自定义控件: 基础知识, 依赖属性, 附加属性 作者:webabcd 介绍背水一战 Windows 10 之 控件(自定义控件) 自定义控件的基础知识,依赖属性和附加属性 示例演示自定义控件的基础知识,依赖属性和附加属性1.自定义控件的示例/MyControls/themes/generic.xaml <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/200…
[源码下载] 背水一战 Windows 10 (75) - 控件(控件基类): FrameworkElement - 基础知识, 相关事件, HorizontalAlignment, VerticalAlignment 作者:webabcd 介绍背水一战 Windows 10 之 控件(控件基类 - FrameworkElement) 基础知识 相关事件 HorizontalAlignment 和 VerticalAlignment 示例1.演示 FrameworkElement 的基础知识Co…
0. 前言 这篇文章延续<C# 基础知识系列- 5 反射和泛型>,继续介绍C#在反射所开发的功能和做的努力.上一篇文章大概介绍了一下泛型和反射的一些基本内容,主要是通过获取对象的类型,然后通过这个类型对象操作对象.这一篇介绍一个在反射中很重要的内容:特性,以及上一篇未完成的内容--泛型在反射中的引用. 1. 特性 特性是一种类增强技术,配合解析对应的解析方法可以完成很多类原本没有的功能.特性本质是一种标签,可以标注在类.方法.属性等.它是类本身的一种信息扩展,就像生活中一个人只有一个身份证号,…
<Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1.1 定义子类 5.1.2覆盖方法 5.1.3子类构造器 5.1.4 继承的层次 5.1.5 多态 5.1.6 理解方法调用 5.1.7 阻止继承:final类和方法 5.1.8 强制类型转换 5.1.9 抽象类 5.1.10 受保护访问 5.2 Object: 所有类的超类 5.2.1 equals方法 5…
<Web服务开发学习实录>第2章构建ASP.NET Web服务,本章我们将学习创建Web服务的各种方法,并重点对使用Visual Studio创建ASP.NET Web服务和修改Web服务的属性进行介绍.本节为大家介绍基础知识--添加服务引用与Web引用的区别. AD: 2.4.1  基础知识--添加服务引用与Web引用的区别 由于.NET Framework 4默认不再推荐Web服务,而是通过WCF来实现Web服务的功能.而.NET Framework 3.5两者都支持,因此在添加时存在一些…
[源码下载] 背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中的元素 作者:webabcd 介绍背水一战 Windows 10 之 控件(控件基类 - Control) 基础知识 焦点相关 运行时获取 ControlTemplate 和 DataTemplate 中的元素 示例1.演示 Control 的基础知识Controls/BaseControl/Con…
[源码下载] 背水一战 Windows 10 (50) - 控件(集合类): ItemsControl - 基础知识, 数据绑定, ItemsPresenter, GridViewItemPresenter, ListViewItemPresenter 作者:webabcd 介绍背水一战 Windows 10 之 控件(集合类 - ItemsControl) 基础知识 数据绑定 ItemsPresenter GridViewItemPresenter ListViewItemPresenter…
[源码下载] 背水一战 Windows 10 (56) - 控件(集合类): ListViewBase - 基础知识, 拖动项 作者:webabcd 介绍背水一战 Windows 10 之 控件(集合类 - ListViewBase) 基础知识 拖动项 示例1.ListViewBase 的基础知识Controls/CollectionControl/ListViewBaseDemo/ListViewBaseDemo1.xaml <Page x:Class="Windows10.Contro…
一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字节的值,该如何在它上面调用方法? 二:值类型转换为引用类型——装箱 2.1CLR对值类型进行装箱时:新分配托管堆内存,将值类型的实例字段拷贝到新分配的内存中,返回托管堆中新分配对象的地址.这个地址就是一个指向对象的引用. ; Object obj = i; 三:将引用类型转换为值类型——拆箱 3.1…