游戏引擎杂文
文章平均质量分 56
Unity3D,UE 的杂文
芒果和小猫
图形图像工程师
展开
-
[图形学基础]关于齐次坐标的理解
之前一直没搞明白坐标变换中的齐次坐标代表着什么含义,最近看懂了,来记录一下1、问题是什么?以二维变换举例,现在有个列矩阵X(2*1),旋转变换W1(2*2),缩放矩阵W2(2*2),平移矩阵W3(2*1); 我们整个变换过程可以是 X1=W1W2X+W3X1=W1W2X+W3X_1=W_1W_2X+W_3 先缩放,在旋转,最后平移,然后得到了新的矩阵X1也就是新的坐标位置...原创 2018-04-08 17:52:20 · 1940 阅读 · 1 评论 -
左手坐标系和右手坐标系
让拇指指向X轴正方向, 食指指向Y轴正方向, 如果中指能指向Z轴的正方向的话,那么这个坐标系就是这个手的坐标系,例如,左手可以满足这个坐标系的话,这个坐标系就是左手坐标系。...原创 2018-04-10 15:07:52 · 437 阅读 · 0 评论 -
贝塞尔曲线理论
贝塞尔曲线(Cubic Bezier Curve)贝塞尔曲线使用4个控制点 P1,P2,P3,P4P_1,P_2,P_3,P_4P1,P2,P3,P4来控制曲线的形状其中曲线通过P1(begin),P4(end)P_1(begin),P_4(end)P1(begin),P4(end) 点,接近但不通过P2,P3P_2,P_3P2,P3点贝塞尔曲线的方程是一个三次多项式以...原创 2018-10-02 15:58:25 · 7221 阅读 · 1 评论 -
Unity Unlit Shader模板解释
Shader "Unlit/MyShader2"{ Properties { _MainTex ("Texture", 2D) = "white" {}//在属性面板中显示纹理,初始状态为白色 } SubShader { Tags { "RenderType"="Opaque" }//设置渲染模式 LOD 100 Pass { CGPROGRAM//开始CG原创 2017-06-04 15:58:35 · 607 阅读 · 0 评论 -
[Unity动画]给人物模型添加简单的动画
给unity人物模型添加动画,首先你得有个模型,在预制体中,有导入设置,重点是Rig设置。第一个选项是动画的类型,因为导入的是人物模型,所以应该选择人形;第二个是人物骨骼,这里已经设好了;第三个选项是对物体进行优化,建议勾选吧将预制体拖拽到场景中后,系统会自动生成一个Animator组件,我们需要创建一个Controller来控制动画,在工程里创建一个动画控制器Anim...原创 2016-08-25 13:02:23 · 42992 阅读 · 9 评论 -
[Unity]简单的socket客户端和服务器
Unity socketSocket译为套接字,支持TCP/IP协议网络通信的基本操作单元,可以将套接字看做不同主机间的进程双向通信的端点。Socket的通信流程(1) 开启一个连接之前,需要新创建一个socket,然后将地址和端口绑定给这个sockrt,客户端在调用connect的时候,会由系统自动分配端口,因此可以省去bind(2) 服务器开启监听(3)原创 2017-10-16 12:22:02 · 5134 阅读 · 0 评论 -
游戏编程模式——命令模式(自定义配置按键)
游戏编程模式——命令模式基于Unity3D本文是根据Robert Nystrom所著的Game programming patterns所写,向作者致敬!在Robert所写的书中,代码全部是用C++所写,且大部分是片段,但是可读性非常好,稍加改动就可以应用到实际项目中去。本文使用近年来比较火热的引擎Unity3D来实现部分编程模式,使用语言是C#。本人水平有限,有些地方理解不到位,原创 2017-11-05 12:33:48 · 2125 阅读 · 0 评论 -
[Unity3D]简单的UGUI滑条控制物体移动
滑条控制物体移动在做作业的时候需要用滑条控制物体的直线滑动,简单写了一下,在这里分享一下1、效果2、用法创建一个canvas在canvas上创建一个slider,命名为Mslider给Mslider加上MySlider脚本将目标物体赋给target将Mslider的slider组件拖动赋给MySlider脚本的slider选择移动方向,目前有X、Y、Z三格方向可选择...原创 2018-03-29 16:17:38 · 5342 阅读 · 3 评论 -
[Unity3D]Start和Awake方法的区别
Start和Awake方法的区别和使用1. Awake Awake is called when the script instance is being loaded. Awake方法在脚本实例正在被加载的时候调用Awake方法在脚本的生命周期中只调用一次Awake方法会在所有object都初始化后调用,所以不用担心object还没有加载出来,GameObject的f...原创 2018-03-25 19:35:44 · 1523 阅读 · 0 评论 -
[UE4]编辑器和蓝图编辑变量
1、编辑和显示变量有些变量经常需要修改,来测试游戏效果,我们希望这些变量可以显示在面板上,从而我们可以手动的修改。 UPROPERTY(VisibleAnywhere) int time; UPROPERTY(VisibleAnywhere, Category = "PlayerInfo") int Level; UPROPERTY(EditAny...原创 2018-07-28 16:22:24 · 4325 阅读 · 0 评论 -
[UE4]蓝图和C++调用自定义函数
1、C++自定义方法,蓝图调用 UFUNCTION(BlueprintCallable, Category = "MyFunc") void dosth();UFUNCTION宏是处理将C++函数暴露给反射系统的一些事情,参数BlueprintCallable意味着这个函数可以在蓝图中调用,而后面的目录是必须有的,这样在蓝图中右键点击的时候,我们就可以根据这个目录找到我们需要...原创 2018-07-28 17:12:53 · 8438 阅读 · 1 评论 -
[UE4]文件的基本操作,创建、删除、寻找
UE4 文件的简单操作1、需要的头文件#include "PlatformFilemanager.h"#include "FileHelper.h"2、如何测试为了方便,我将关于文件的操作放在了Actor类的操作中。具体操作就是,自定义一个继承Actor的类。然后给这个类添加一些方法,例如fineFile()这样的方法,关于文件的具体操作都写在这些函数里面,然后在Actor的...原创 2018-07-23 17:19:06 · 14874 阅读 · 2 评论 -
[UE4]安卓环境和打包
1、安卓环境UE4的安卓环境配置起来比较简单,因为利用了英伟达提供的codeworks,就可以一键配置环境了,以下是我的UE4的目录,在这个目录中找到CodeWorksforAndroid-1R6u1-windows.exe这个文件,当然因为UE4的版本不同,可能会有略微差别。C:\Program Files\Epic Games\UE_4.19\Engine\Extras\Android...原创 2018-07-24 19:38:53 · 20803 阅读 · 0 评论 -
[UE4]Timer的简单使用
1、使用到的头文件#include "TimerManager.h"2、用法定义一个FTimerHandle成员变量,在定义一个print函数,用来在控制台输出#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "TimerTest.generated.h"UCL...原创 2018-07-28 19:59:21 · 5084 阅读 · 1 评论 -
UGUI计算Text文字的宽度
UGUI计算Text组件里文字的宽度1. 为什么要计算宽度我碰到这个问题,是需要在Unity中利用UGUI来实现图文混排的功能,类似于网游中的聊天系统,文字和emoji表情可以一起发出去。我用的方式是将表情使用占位符表示,例如你吃饭了吗[微笑],其中这个[微笑]就是占位的。在解析中,将这个占位符解析出来,然后在该位置放上一张图片。那么获取这个图片的位置就很重要了。而要获取图片的位置,必...原创 2018-06-19 19:32:08 · 6930 阅读 · 1 评论 -
[UE4]简单的线程
1、简单的线程有些工作不适合在游戏逻辑中进行,例如在一帧中进了过于复杂的计算的话,游戏会卡顿,这个时候我们可以考虑在另外一个线程中进行计算而不再游戏的主线程中进行计算。2、需要的头文件#include "Runnable.h"#include "RunnableThread.h"3、UE4的多线程首先定义我们要运行的runnable,我们所有要执行的逻辑和资源都在这个...原创 2018-07-23 19:20:24 · 1042 阅读 · 0 评论 -
[UGUI]获取单个字符的宽度和高度
public Text mText; private TextGenerator mTextGenerator; private TextGenerationSettings mTgSettings; void Init() { mTextGenerator = mText.cachedTextGeneratorForLayout; ...原创 2018-07-04 10:35:51 · 2117 阅读 · 0 评论 -
[Unity工具]简易对象池
1、对象池关于对象池的介绍有很多,这里就不详细说了。总的来说,例如弹幕游戏,会生成很多子弹,当子弹失效后,这些子弹会摧毁,这里就产生了问题。实例化子弹,摧毁子弹,涉及到内存分配和GC,会对性能又很大损耗。我们想重复利用这些已经生成了的子弹,不销毁他们,保存他们的引用,需要的时候调用他们,减少了GC,提高性能。2、Unity中的对象池using System.Collections;...原创 2018-08-01 16:38:46 · 316 阅读 · 0 评论 -
[Unity3D]利用DoTween制作卡牌翻转的效果
1. 卡牌翻转效果利用Unity的UGUI制作了2D卡牌翻转的效果,如果是sprite对象的话,原理应该也是一样的,以下是效果图图1 卡牌翻转效果2. 关于DoTweenDoTween是一款十分强大且好用的动画效果插件,有免费版和收费版,免费版就可以满足大部分需求了,在Unity Assets Store里就可以下载,在本效果里就用了DoTween的旋转功能。3. 设计思路创...原创 2018-11-26 19:25:18 · 6814 阅读 · 7 评论 -
[Unity游戏]卡牌记忆消除游戏
1. 效果和工程先来看看游戏是什么样子的,以下是在编辑器中运行的效果完整的工程 https://github.com/MangoWAY/Unity2DMemoryCard,可以给个Star哈2. 核心思路根据setting里设定的数字生成指定牌的个数,生成一个随机序列,按照这个随机序列依次给牌赋值Num,举例:一共4张牌,0,1,2,3,生成了随机序列0,3,1,2,按照随机序列...原创 2018-11-30 16:56:52 · 1662 阅读 · 0 评论 -
[Unity]关于AddExplosionForce(爆炸力)不能击飞的问题
问题用法很简单,就是模拟爆炸的效果,但是在我使用的时候遇到了些问题,记录一下我使用了Unity自带的AI寻路系统,NavMeshAgent,让敌人自动寻路来找玩家,然后玩家发射子弹攻击,并给敌人加上爆炸的效果,可在我几番尝试后,当给敌人AddExplosionForce的时候,敌人只是向后退,并没有产生击飞的效果,所以我就找原因,没想明白,也没有搜到。后来发现是NavMeshAgent和Add...原创 2018-12-02 21:01:46 · 4541 阅读 · 0 评论