自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (15)
  • 收藏
  • 关注

原创 Unity灯光烘焙

Unity 灯光烘焙

2022-09-22 16:33:55 5184

原创 Unity 材质球参数修改

Unity 材质球参数修改

2022-09-22 16:32:59 3272

原创 C# 类型转换及保留小数位数的方法整理

C# 类型转换及保留小数位数的方法整理

2022-09-22 16:31:46 12222 1

原创 Unity2018 AR 开发记录

一、安卓环境配置安卓环境中的SDK和JDK自己配置的话,会出现找不到的情况,提示:解决方案:1、通过unity hub(我测试的是2.4.15)安装Unity(2019.4.15),网络不佳的话可以先安装unity软件,再通过“添加模块”安装安卓环境。2、如果下图中的位置没有自动出现目录,把选择框打开/关闭来切换一下,或者手动在unity2019新版本的安装目录下找到对应的此文件来配置一下。3、Copy目录位置到Unity2018版本中二、内部设置...

2021-08-27 15:15:17 274 1

原创 AssetBundle资源加载 三

资源加载AssetBundle的加载有以下几种方式:1、从本地加载使用LoadFromFile2、从内存加载使用LoadFromMemoryAsync3、从服务器Web上加载使用UnityWebRequest第一种 本地加载 LoadFromFileusing UnityEngine;using System.Collections;public class LoadFromFileExample : MonoBehaviour { IEnumerator Start (

2021-06-30 17:53:28 411

原创 AssetBundle资源加载 二

AssetBundle管理工具Unity官方出的资源打包工具,AssetBundle-Browser Tool,在新版本(2019.2已测试)的菜单Window-PackageManager中可以找到,并直接点击右下角的Install按钮 安装即可。

2021-06-30 16:32:55 180

原创 AssetBundle资源加载 一

AssetBundle管理工具Unity官方出的资源打包工具,AssetBundle-Browser Tool,在新版本(2019.2已测试)的菜单Window-PackageManager中可以找到,并直接点击右下角的Install按钮 安装即可。

2021-06-30 16:17:23 176

原创 U3d性能优化二 之 遮挡剔除

**什么是遮挡剔除**遮挡剔除,即Occlution Culling,camera剔除主要是把不需要渲染的物体提前剔除 ,不送去gpu渲染 减少dc、渲染tris。消耗cpu来减轻gpu的压力。遮挡剔除,成功的关键1、参数设置合理2、相机在遮挡剔除区域内(非常重要)如何使用1、将需要参与遮挡剔除的物体设置为静态static2、Window–Occlusion Culling ,3、设置smallest occluder 参数 参数不要太大,是物体大小的1到2倍,效果比较明显。此参数

2021-06-29 15:17:55 505 1

原创 U3d性能优化一 之 LOD

**什么是LOD**LOD是Level Of Detais的简称,是多层次细节的意思。首先对于要展示的模型,准备多个不同面数的模型。在场景中,根据游戏物体与相机的距离,确定切换显示哪一个模型。一般距离近的时候显示高精度的模型,距离远的时候显示低精度的模型。游戏中有高模与低模的存在,说白了就是离得近的时候看得清楚,显示高模,而离得远的时候看的模糊,就显示低模。根据相机与物体的距离,Unity会自动切换。使用LOD1、准备3个模型,如下图,从左到右是高模、中模和低模2、创建一个空物体A,添加

2021-06-29 14:03:14 545

原创 事件的广播与监听系统(一)

一、类的描述:1、在CallBack类中定义了委托,有无参的,1个参数的…到有5个参数的。这相当于U3d中的Action类。2、EventType类中的枚举存放了事件码,后续有需要的话可以自己新加。3、最主要的是EventCenter类,定义了不同参数的添加监听(AddListener)、移除监听(RemoveListener)和消息广播(Broadcast)。二、使用示例:2.1 添加事件监听在Awake()中添加监听,如果调用的委托方法中需要传入参数,就要在AddListener<&

2021-05-31 19:59:13 468

原创 Unity协程的开启和关闭

StopCoroutine的使用方法一共有三种:1、StopCoroutine(string method);2、StopCoroutine(Coroutine routine);3、StopCoroutine(IEnumrator routine);1、StopCoroutine(string method);StartCoroutine("Test");StopCoroutine("Test");StartCoroutine("Test",1);StopCoroutine("Test

2021-05-31 18:58:53 1988 2

原创 Unity开发之VS附加到Unity中

1、在Unity中导入 VS Tools.unitypackage位置(默认安装):C:\Program Files (x86)\Microsoft Visual Studio Tools for Unity\2015操作: Assets – ImportPackage,选择上述的VS Tool即可此时在unity中的Project面板(Two Layout模式)中能看到如下图:2、VS中设置:操作:调试 – 附加到进程 – Unity.exe3、重启VS,在调试的地方就会看到"附加到

2021-05-27 13:39:02 7895 1

原创 U3d生命周期-Awake,Start,OnEnable,Reset

1、MonoBehaviour.Awake() 唤醒当一个脚本实例被载入时Awake被调用。Awake被用于在游戏开始之前初始化变量或者游戏情景。在脚本整个生命周期内它仅被调用一次。Awake在所有对象被初始化之后调用,因此你可以安全的与其他对象对话或用诸如 GameObject.FindWithTag 这样的函数访问它们。注:每个游戏物体上的Awke随机的顺序被调用。由于这些,你应该用Awake去设置脚本之间的引用,并用Start反复地传递任何信息。Awake在任何Start函数之前被调用。它不能用

2021-05-26 19:31:39 686 1

原创 Unity 控制ParticleSystem的粒子数量(emission)

ParticleSystem ps = GetComponent();ParticleSystem.EmissionModule em = ps.emission;ParticleSystem.MinMaxCurve mmc = em.rateOverTime;mmc.constant = 10f;em.rateOverTime = mmc;ps.emission = em;

2021-04-13 17:17:10 4472

原创 Unity中 Dll动态库的制作与引用方法

一、Dll生成1、VS中 文件—新建—项目,选择VisualC#—Windows—类库,名称就自定义一个名字。2、脚本类名默认是Class1,改一下名字,此处是 ClassDll按正常添加脚本内容即可namespace ClassLibraryDll{ public class ClassDll { public bool Check() { return true; } }}3、在右边解决方案

2021-03-11 10:58:11 1048

原创 Unity3d中Quaternion.SetFromToRotation和Quaternion.FromToRotation

1、基本语法:public void SetFromToRotation(Vector3 fromDirection, Vector3 toDirection);功能说明:此方法用于创建一个从fromDirection到toDirection的rotation。例如,设有以下代码:Quaternion q1 = Quaternion.identity;q1.SetFromToRotation(v1,v2);transform.rotation = q1;则相当于将GameObject对象进行如下变

2021-03-05 14:34:23 1378

原创 unity 使用RotateAround的使用注意点

对于一个固定的点,围绕它进行旋转。需要注意区分世界坐标还是本地坐标RotateAround(GameObject.Find("Cave").transform.position, transform.right, Time.deltaTime * 10);RotateAround(GameObject.Find("Cave").transform.position, new Vector(0,0,1), Time.deltaTime * 10);RotateAround(GameObject.Find

2021-03-05 11:59:20 2360 2

原创 判断鼠标是否点击在UI上

EventSystem.current.IsPointerOverGameObject()方法,作用:判断鼠标是否点击在UI上。在窗口端进行判断时使用://如果按下了鼠标左键并且 鼠标点击的不是UIif(Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject()){ // 点击屏幕,发射子弹操作}注意:情景case:在点击 非UI 时,才执行发射子弹逻辑。一般情况下,都会放一

2021-03-05 11:32:11 1139 1

原创 String.Format 字符串拼接

string.Format("…{0} , …{1}",参数0的实际数据,参数1的实际数据) ;try catch 语法int[] nums = { 0, 1, 2 }; void Test0() {try{nums[3] = 90;} catch{ string logg = string.Format("nums数组越界,是:{0}个,\n要修改的序号是:{1}", nums.Length.ToString(), "3"); Debug.Log(

2021-03-05 09:52:40 848 1

原创 UE4 实现键盘控制物体自转(蓝图类对象引用)

一、控制物体一直自由旋转1、创建蓝图Actor2、左下角添加组件——立方体(作为旋转的物体)3、在默认的事件图表中,将已创建的立方体拖拽到事件图表中4、按住Cube1的节点并拖拽,搜索“AddLocalRotation”/“添加本地旋转”,此时可以看到旋转的三个轴向xyz都可设置,想要绕垂直方向旋转,可设置Z值。(旋转值是正值时,做顺时针旋转)5、要想持续旋转,将事件Tick作为添加本地旋转的输入二、创建布尔值(bool)控制旋转1、在变量中创建一个变量“是否可以旋转”,将此变量拖拽到事件图

2021-03-03 09:09:43 3386 1

原创 UE4 创建变量(提升为变量)

当一个类里面的函数比较多,并且使用比较频繁的时候,就要不断的从这个类节点往外拉线,从而获取不同的函数节点,这样的蓝图就会看起来比较乱,这时候,就可以将这个常用的类提升为变量。提升为变量的方法:示例:按住第三人称角色的蓝色输出节点,往外拉即可看到“提升为变量”也可以理解为,创建了一个变量,然后将第三人称角色类放入到了这个变量中。...

2021-03-01 22:50:47 2367

原创 UE4 创建自定义事件之三(调用其他蓝图事件实现触发加速)

在创建自定义事件之二中,已经在第三人称角色蓝图的图表中添加了新图表(触发加速)。注:在下文中,被调用的蓝图成为其他蓝图。那么就在蓝图Actor中调用其他蓝图的出发加速。节点获取方法:按住执行节点并往外拖拽,鼠标保持不动,然后输入搜索 要调用的其他蓝图名字,即“触发加速”。连接节点:...

2021-03-01 22:24:02 2217

原创 UE4 创建自定义事件二(设置角色移动速度)

1、基于第三人称控制器,所以找到第三人称控制器蓝图(ThirdPersonCharacter)。位置没有改动的话,应该是在内容浏览器(Content)–ThirdPersonBP–Blueprints。然后打开2、添加图表:在左侧,我的蓝图–图表,可点击“+”,添加图表,自定义名字3、添加自定义事件:打开新添加的图表,添加自定义事件,搜索“自定义事件”,然后要起一个具体的名字(触发加速BP)便于区分。4、获取参数节点:在左侧组件中可以看到 CharacterMovement,拖拽出来。这时候需要设置

2021-02-28 22:28:42 8575

原创 UE4 创建自定义事件一(类型转换)

以角色进入检测区内时,改变移动速度为例:1、创建Actor蓝图。蓝图最好选择Actor蓝图,因为可以将此蓝图很方便的迁移到另一个关卡,甚至是另一个项目中。2、制作触发区域。创建盒体触发器,添加重叠事件。3、类型转换可以说叫蓝图通信,两个蓝图间进行数据交互。现在需要第三人称控制器角色,那么就要将类型转换为第三人称角色,搜索“类型转换为Thirdperson”,触发器中的“OtherActor”,就是指要控制的目标物体,所以将第三人称控制器的类节点连接到“OtherActor”上。其中第三人称控制

2021-02-28 22:09:39 2036 1

原创 Unity Rigidbody第一人称移动(按键移动鼠标控制朝向)

1、将地面添加盒体碰撞器(BoxCollider),周围物体防止穿模用盒体或胶囊体碰撞器(Capsule Collider)简单拼接出物体的形状即可。2、首先在控制器上添加胶囊体碰撞器(Capsule Collider),与盒体碰撞器(Box Collidr)的区别是移动更加平滑。再添加刚体(Rigidbody),刚体的约束(Constraints)设置中将位置解冻(FreezePostion)和旋转解冻(FreezeRotation)都✔设置为True.3、在控制器上添加脚本控制,即可。using

2021-02-28 14:16:20 993

原创 对象池的使用

为了避免重复创建开销比较大的对象,我们可以通过对象池来优化。对象池的思路比较简单,事先创建好一批对象,放到一个集合中,以后每当程序需要新的对象时候,都从对象池里获取,每当程序用完该对象后,都把该对象归还给对象池。这样会避免重复的对象创建,提高程序性能。注:如果是动态创建对象池,开始时对象池的List或数组是空的,可以先创建一个然后加入到对象池中,这样就可以开始使用了。using System.Collections;using System.Collections.Generic;using Un

2021-02-26 16:02:05 149

原创 网络连接-接收数据(UDP)

基于UDP协议,接收数据using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;//using System.Threading.Tasks;namespace UDPTest{ /// <summary> /// 接收

2021-02-26 15:40:57 330

原创 加载序列帧图片并播放

动态加载序列帧图片,可根据情况设置播放帧率,动态控制播放。using UnityEngine;using System.Collections;public class TextureResource : MonoBehaviour { private Sprite[] animTime; //序列帧资源 private float FPS = 25; //播放序列帧的刷新率 [HideInInspector] public float time; //计

2021-02-26 11:47:44 1132

原创 UE4 通过按键控制升降电梯

主要分为几部分:电梯触发器,按键输入关联开关门的开关控制,电梯上下移动控制1、电梯触发器即盒体触发器,当玩家在触发器范围内时才可控制电梯创建一个Box作为电梯底座,盒体触发器作为电梯的碰撞检测。注:触发器要作为电梯升降部分的子物体,跟随电梯一起移动。2、按键输入关联开关门的开关控制3、电梯上下移动控制3.1 Lerp插值处理此节点中A代表初始值,B代表结束值(需要填入结束位置的值),Alpha接收时间轴的动画进度值。3.2 时间轴Lerp的范围是0-1,所以时间轴的两节点的值也设为0

2021-02-20 18:25:49 2117

原创 UE4 光照需要重建问题

一共分为2种方式:1、将光照设置为可移动的,进行实时计算光影2、 在世界场景设置中,LightMass的高级选项中设置强制无预计算光照,此选项是否不计算,所以设为false,强制计算光照。

2021-02-20 15:44:48 6159 1

原创 UE4 外部字体导入

UE4 外部字体导入1、在内容浏览器中,导入功能。2、直接拖拽到内容浏览器中,可以事先创建好放置字体的文件夹。3、复合字体:内容浏览器——用户界面——字体——添加字体点击文件夹图标导入字体文件。主流字体文件都支持,包括:.ttf .ttc .otf .otc....

2021-02-20 15:33:49 975

原创 UE4控制开关门之三(碰撞检测+鼠标点击)

功能:点击门模型,控制门开关1、在需要点击的模型上注册事件首先需要在门模型上添加点击事件,点击要做旋转操作的门模型,在界面中会看到Events ,在OnClicked点击“+”注册事件,在蓝图中会自动出现OnClicked(门模型的名字)节点。逻辑同样是奇数次控制开门,偶数次控制关门,将OnClicked节点连接至Gate(开关)。2、在玩家控制器中开启玩家点击操作的事件因为是基于第三人称控制器,所以回到场景中,找到WordSettings(世界设置)注:WordSettings(世界设置)

2021-02-20 14:49:47 933

转载 UE4 控制开关门基础之一

1.搭建场景,制作一个门,选中模式窗口下Basic/合体触发器(Box Tigger),拖拽到场景中,调整位置大小,将门包裹。说明:Box Tigger:是一个立方体的Tigger,在程序运行过程中隐藏,无法看到具体的物体。2.选择UE4中Blueprints->关卡蓝图->打开关卡蓝图3.在蓝图中右键,添加OnActorBeginOverlap及OnActorEndOverlap两个事件(前提鼠标要将TriggerBox选中)说明:OnActorBeginOverLap:触碰开始时

2021-02-19 22:17:03 1852

原创 UE4控制开关门之二(碰撞检测+按键输入)

1、蓝图——新建空白蓝图类——Actor2、整体逻辑:当玩家进入有效探测范围内时,可进行按键操作控制门打开;同理,当玩家离开探测范围时,再次按键控制门关闭。2.1 开关(Gate)当玩家在目标范围内时,Gate有效,故连到Open节点;同理,在范围外时,Gate无效,故连到Close节点。2.2 按键输入直接输入需要的按键键名(E)2.2 开启玩家的按键输入,用到EnableInput(启用输入)和DisableInput(禁用输入)。2.3 按键之所以响应,是因为有玩家的控制器,所以要获

2021-02-19 22:05:27 1404 1

原创 WebGL端截取相机内画面

//TestJPEGDownload.csusing System;using System.Collections;using System.Collections.Generic;using System.Runtime.InteropServices;using UnityEngine;public class TestJPEGDownload : MonoBehaviour{ private void Start() { } //private v

2021-02-01 23:22:29 421

原创 函数点整理

1、材质球UV偏移 public Material mat; public float speed; public Transform obj;void Update () { //obj.GetComponent<MeshRenderer>().material.SetTextureOffset("_MainTex", new Vector2(0,speed*Time.time)); mat.SetTextureOffset("_

2021-01-29 17:30:50 192

原创 Unity对象池

对象池模式经常用在频繁创建、销毁对象(并且对象创建、销毁开销很大)的场景。 对象池模式管理一个可代替对象的集合。组件**从池中借出对象,用它来完成一些任务并当任务完成时归还该对象**。被归还的对象接着满足请求,不管是同一个组件还是其他组件的请求。对象池模式可以管理那些代表的现实资源或者通过重用来分摊昂贵初始化代价的对象。一般通过字典(Dictionary)来存储using System.Collections;using System.Collections.Generic;usin.

2021-01-28 19:12:51 125

原创 Unity异步加载

using System;using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.SceneManagement;namespace Universal{ public class SceneController : MonoBehaviour { public static SceneController Instance;

2021-01-28 17:52:22 353

原创 Unity 相机跟随某物体

特点:可自定义设置:相机与被跟随目标的距离,移动到目标位置的速度,与目标位置的偏移角度。切换跟踪目标。using UnityEngine;using System.Collections.Generic;namespace Ceto{ public class CameraFlowTarget : MonoBehaviour { struct Position { public Vector3 forwardAmount;

2021-01-28 16:26:51 518

原创 Unity 按键控制(移动、旋转、相机角度控制)

通过按键控制物体的位置及姿态1、移动:物体xyz轴分别有对应的按键控制。加速度控制:长按键会使加速度变大,同时加速度值有范围限制。移动范围也有限制,都是通过函数 Mathf.Clamp 计算。初值设置: private Vector3 m_camRot; private Transform m_camTransform;//摄像机Transform private Transform m_transform;//摄像机父物体Transform public floa

2021-01-28 14:32:44 5638 1

Unity UGUI事件系统的监听和广播.rar

1、封装了由无参、1个参数到5个参数的委托类型 2、对应的参数的事件监听、移除监听的方法、广播 3、事件码是单独的枚举类,可自由添加

2021-05-31

TCP数据传输+第三方调试工具.rar

按照TCP协议的客户端和服务器代码,以及第三方调试工具

2021-03-10

TCP_scripts.rar

按照TCP协议的客户端和服务器代码

2021-03-08

FairyGUI-Editor.rar

FairyGUI-Editor 安装包,可快速使用

2021-02-26

Exe动态导入模型.rar

Unity发布完的Exe文件,可通过文件导入的形式动态导入模型

2021-02-26

DoTween.rar

DoTween插件,包括0.9和1.0两个常用的版本

2021-02-26

Unity数据读取与写入(Excel,Txt,Xml).rar

数据的读取与写入示例,包括Excel、Txt、Xml三种格式

2021-02-26

切场景,淡入淡出.rar

切换场景时,避免突兀,设置当前场景做渐隐效果,跳转到的下一场景做渐现效果。

2021-02-26

快速方便的将文字转换成语音文件

将所有的语音文字内容配置到xml文件中,运行exe文件后就可以一键配音了。

2021-02-26

TransparentWindow.rar

Unity项目发布后,界面中之前的天空球部分变为完全透明,只有场景中的游戏物体。

2021-02-25

PPT自动加载显示(支持预览模式,支持左右页按键切换).zip

1、ppt图片放到Resources文件夹下自动加载 2、ppt页数根据读取到的图片数量自动计算,自动创建image 3、支持ppt预览模式,左侧点击缩略图,右侧会自动跳转到对应的页数 4、支持左右也切换 5、支持快速跳转到某页数

2021-02-01

UGUI按钮按下立即执行+双击事件.rar

按钮升级版 1、带参数(按钮GameObject)按钮事件—onClickX 2、按下瞬间 按钮事件—onClickDown 3、双击 按钮事件—onDoubleClick

2021-01-27

HUD(飞机平视指引系统).rar

按照飞机通用的HUD样式,左侧是飞行飞行速度,右侧是飞行高度,地平仪中体现俯仰角和滚转角,上边栏体现的是偏航角

2021-01-27

Universal WebGL Template 1.2.1.rar

自定义发布后的开屏Logo,通过修改index.html文件中的"CATCHPHRASE"可设置logo图的位置

2021-01-27

ChineseInputWebGL.rar

1.解决输出WebGL后在火狐/谷歌等浏览器中不能输入中文的问题 2.解决全屏不能输入的问题 3.支持光标移动中间插入输入 4.支持Ctrl+C(拷贝),Ctrl+V(粘贴),Ctrl+X(裁剪)等键盘操作

2021-01-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除