UE插件的本地化
在写插件的时候,有时候也会用到LOCTEXT或者NSLOCTEXT,那么在插件中怎么使用本地化的功能呢?
创建插件和再插件中使用LOCTEXT或者NSLOCTEXT,这个就不说了。
添加一个专门给插件使用的Targer,这里的名称可以和插件名称不一样!这里我们使用MyEditor_Local。
加载时机有很多,自己按需取,我这里是只考虑editor的,所以直接取了Editor。
这里我只考虑代码的,所以目录上我只选择了editor的代码
添加需要的语言,后续的Gather Text等就不说了;
完成了这些本地化后,我们在项目工程的Content中有Localization
将MyEditor_Local move 到 Plugins/{你的插件名称}/C...
半透明物体的描边和投影
正在学习unreal的材质,有些不一定到位
前提知识交代
SceneDepth
CustomDepth
PixelDepth
这几个概念是这个文章里比较重点的,至于stencil的话,以后再说吧!
直接进入正题吧!
项目前提
创建一个空的场景
将SM_MatPreviewMesh_01和TextRenderActor删除!
创建一个Actor(Name=”TestActor”)
添加两个StaticMesh,一个改名为Outline,一个为Mesh
为这两个StaticMesh添加同一个mesh(如果对ue比较熟悉的可以不样!)
将Mesh的设置改成下图
将Outline的设置改成下图
SceneDepth
为了方便展示S...
UE的资源操作监听和修改
资源注册表
先说明一下,很多知识都可以在上面的link里学习到的!
背景交代
项目的资源我们是希望有一套规范的!比如:
资源在导入的时候检查纹理的大小是否在规范的范围内
fbx导入的时候自动设置部分属性和检查骨骼数量
资源名称是否符合标准
资源的路径是否正确
……
因为很多都是有规范的,所以我们需要有一些自动的工具去处理!
方案列举
目前大致想了一下,基本有一下几个方案:
工程内(本地或者分布)
每次打开项目都检查所有的资源
使用plugin加载的时候放置资源监听
只有项目工程打开后,有变动才检查变动的资源
...
Lua的编译和反编译
背景
无论是unity项目还是unreal的项目,我都使用了lua!!既然用了lua那么打包的时候肯定是离不开Lua的编译和反编译了!
Lua的编译
Luac
Luajit
以上两种应该是比较常用的了,当然,你可以自定义加密和解密的算法!
Luac
lua的安装在这里就不累述了!
测试使用的lua文件
TestLua.lua
local AAClass = {}
function AAClass:TestFunction(value1)
print(value1)
end
function AAClass:TestAdd(a, b)
return a+b
end
local str = "Test!!!"
local obj = AAClass
obj...
c++对象内存布局
直接开始吧。主要是各种dump比较多,内容没多少的!
#include <iostream>
using namespace std;
class TestClass {
public:
TestClass() :Field1(10), Field2(20){}
void Print() {
cout << "TestClass::Print()" << endl;
}
private:
int Field1;
int Field2;
};
通过dump,我们能得到以下的资讯!
已启动生成…
1>------ 已启动生成: 项目: cppRTTI, 配置: Debug Win32 ------
1>Main.cpp...
FoxMail缓存路径修改
本人在公司的电脑中,因为c盘的空间太小了,很多东西已经从c盘挪出去了,但还是不足,所以我需要把其他内容能挪就挪!
然后发现Foxmail居然快2G了,惊呆了老铁!
网爆了一下Foxmail后,找到一下两种方法!
重新安装FoxMail
在Foxmail的安装目录下,邮件默认的存放路径就是{Foxmail的安装路径}\Storage,在这个目录下是按邮箱地址命名的目录,目录里存放了该邮箱的所有信息。
如果想将邮件存放在其他盘,需要下面几步:
将{Foxmail的安装路径}\Storage下的内容移动到其他地方备份;eg:d:\Storage\
卸载Foxmail并重新安装,安装路径指定到其他地方
将d:\Storag...
UE打包环境配置
背景
项目使用的自动化打包环境!
依赖的内容
gitlab ci
android studio
openjdk
unreal引擎源码的【不知道是不是一定要,反正我用的就是源码的】
这里就是Android为例!
步骤
既然是Android平台的话,那么就一定少不了sdk了!
Android SDK和NDK的环境
我使用的是unreal 4.27.2的版本,所以我就直接按照官方的文档直接下载了对应的SDK和NDK;
Android SDK
Android NDK 21b
openjdk
在之后搞开发的都懂了,就是各种环境变量
ANDROID_SDK_HOME
ANDROID_NDK_HOME
JAVA_HOME...
Hierarchy调整次序
由于某些原因,我需要替换Hierarchy下某个GameObject,如果是直接DestroyImmediate后再Instantiate的话,新创建的GameObject是直接放置在最后的(同一个父节点的情况下)
Unity提供了GetSiblingIndex函数获取位置
var index = transform.GetSiblingIndex();
如果需要替换原来的位置
newObj.transform.SetSiblingIndex(index);
Index就是位置的index,
eg:
// 置顶
newObj.transform.SetSiblingIndex(0);
159 post articles, 20 pages.