学习理解
好身亡
这个作者很懒,什么都没留下…
展开
-
Unity 图片定点缩放功能
功能情景:有的 AVG 项目可能需要玩家缩放图片的某一个点来仔细确认图片,比如碧蓝航线里面的放大看老婆的功能,又或者说如果直接在 Unity 的 Scene 编辑场景里面使用滚轮拉进拉远,可以看到 Unity 就是聚焦在你鼠标的位置在缩放。这里提供一个实现这种效果的思路实现原理:注:以下涉及 UGUI 的一些基本原理,需要对 UGUI 的属性比较熟悉才方便理解UGUI 里面有一个 pivot 属性,这个属性决定了在图片宽高变化的时候,图片左下角(offsetMin)和右上角(offsetMax)是以原创 2020-12-18 11:30:12 · 4057 阅读 · 1 评论 -
Unity3d GUID和本地ID(Local Indentifier)
GUID和本地ID都是Unity用于资源管理的ID,GUID是工程里面所有文件、文件夹的唯一标识,通过GUID可以唯一确定一个文件或文件夹。本地ID是一个对象内(比如Scene),标识不同资源实例用的ID。举个例子,现在有一个预制体A,那么我们可以查看它的.meta文件看到它的GUID:在场景里面生成两个这个预制体的实例,那么大家应该都知道了,这两个实例肯定表示不同的对象,但是它们都通过GUID指向一个原型预制体A,通过文本方式打开Scene,ctrl+f查找预制体A的GUID:红框表示处就是实例的原创 2020-05-13 18:56:47 · 4729 阅读 · 0 评论 -
Unity3d AssetBundle依赖关系理解
AssetBundle(简称AB包)打包方式:[@MenuItem("AB/Build AB")] public static void BuildAB() { BuildPipeline.BuildAssetBundles(Application.dataPath, BuildAssetBundleOptions.UncompressedAssetBundle, BuildTarget.StandaloneWindo原创 2020-05-13 18:37:58 · 2320 阅读 · 0 评论 -
DoTween.IsComplete的坑
在使用协程进行DoTween动画的时候,我希望能够控制其在某一时间点停止动画,所以有下面这种写法while (!tween.IsComplete() && !cancellationToken.IsCancellationRequested){ yield return null;}然而我发现单是这样协程会一直无法完成(即tween.IsComplete()会一...原创 2019-11-18 23:55:57 · 2588 阅读 · 1 评论 -
使用UniRx加UniRx.Async实现AddressableReference的异步加载
因为Addressable资源的加载是异步进行的,而一般的写法是添加回调,如下是一种写法:public static void LoadAsync<T>(string address, UnityAction<AsyncOperationHandle<T>> endCb){ Addressables.LoadAssetAsync<T>(a...原创 2019-11-12 10:33:10 · 2512 阅读 · 0 评论 -
unity 关于以前常量影响效率的修复
根据我在知乎上查看的文章说,Unity的Quaternion.identity、Vector3.zero等常量以前是 直接在get属性里面 new一个新对象并返回的,这无疑会造成不必要的GC,而现在Unity已经修改了写法,返回的是一静态常量:同理Vector3等的:另外这里提示一下,大家可以看到这几个常用的都是结构体(也就是值类型),所以别指望像引用那样使用它。...原创 2019-11-08 16:57:17 · 894 阅读 · 0 评论 -
Unity 关于foreach产生GC的bug修复
以前面试的时候了解到Unity中要少用foreach,因为会产生GC Alloc,也就是会产生垃圾内存,后面看知乎了解到产生这个GC的原因主要在IL层里面有一个box装箱的过程以及IEnumrator中newObject的过程,具体可以看这篇文章,但是后来有人说这个bug已经被修复了,但网上没有明确的文章指出来(或者是我没有找到),所以我自己按章上面提到的文章采用的方法自己测试了一遍。测试结果:...原创 2019-10-27 15:12:44 · 2530 阅读 · 1 评论 -
DOTween 中关于Sequence的坑——使用Backward无效
坑出现的场景:有的时候我希望把Dotween的一些动画列为Sequence,然后再用一个Sequence去组装这些个Sequence构成一个大的动画,然而这样做我发现我并不能使用PlayBackward等操作去控制小的Sequence。之所以会出现这些情况,是由于Sequence在Append、Insert、Join所有Tween的时候(Sequence继承自Tween),会把其isSequen...原创 2019-10-20 16:17:28 · 3156 阅读 · 0 评论 -
JetBrain Rider使用技巧(持续更新)
我用的版本是JetBrain Rider 2019.1.1IL Viewer查看编译后的IL代码:IL Viewer位置在Tools -> IL Viewer,打开后会在右边出现一个窗口,之后只需要点击编译,之后在右边就会出现IL层的代码。自定义命名规则:这个功能个人用起来非常舒服,可以强制标准化整个项目。位置在FIle -> Setting代码建议、提示的触发条件:在某...原创 2019-10-17 16:27:59 · 6470 阅读 · 1 评论 -
Unity 内存优化——音频设置
如果不需要立体声,勾选Force to Mono选项;这样可以减少内存和占用的磁盘空间,主要在移动平台使用大音频需要被设置为流式音乐,以200kb为界,设置方式如下图:接下来用我用场景中的一个BGM音源来展示这种设置的效果,首先这是不使用流式设置产生的音频内存占用,为21.8M然后,这是使用了流式设置的占用大小可以明显看到内存占用变为了1.9M!!!较长的且不是流式的,可以导入Compres...原创 2019-10-16 21:52:22 · 898 阅读 · 0 评论 -
Unity LWRP修改Blit Shader来使Camera的Depth Only生效
LWRP是默认不支持多个相机实现Depth Only的,所以你多个相机只看得到一个相机里面的东西,因此需要修改。下面这个连接的作者解释的比较清楚。https://www.jianshu.com/p/18910b94ef91网上有很多类似的解释,但是都没有指出Blit在哪儿,也没有说加的语句在哪儿,虽然也不难猜,这里我就指出来一下。Blit在哪儿:Packages/Lightweight RP...原创 2019-10-13 19:17:47 · 1587 阅读 · 0 评论 -
Unity 自主学习之用设计模式模拟王者荣耀 (一)-- 状态模式实现张飞开大
前言:笔者最近由于学习了一些开发模式,觉得里面有很多模式非常有趣,而正好本人又喜欢玩儿王者荣耀,所以就想着复制一下,看能不能做出来,笔者并不是大牛,这个只是个人对于设计模式的应用学习,只是目标是为了实现王者荣耀功能的实现,而且开发顺序是笔者对 设计模式的学习顺序,所以后面可能会出现 大篇幅修改的情况,如果是真心想复刻王者荣耀的就可以不看了,另希望各位大牛给出一些框架的修改意见简介:状态...原创 2018-11-18 19:44:44 · 599 阅读 · 0 评论 -
Unity 通过TextMeshPro创建属于自己的字体库
TextMeshPro简介Unity官方的插件,专门用来弥补UGUI中Text无法设置字符间距等不足,而且可以通过设置材质等方式制作出非常棒的字体效果。TextMeshPro安装TextMeshPro在2018版本以后就可以通过Window/PackageManager直接获取,而且可以自己选择版本,2018以前的可以直接去AssetStore上面下载,下载后你就可以使用(PS:需要去设置一...原创 2019-08-02 15:32:39 · 7142 阅读 · 0 评论 -
Unity SHA1加密
SHA1加密什么是SHA1加密自己百度,这里直接放代码public string MakeSHA1(string originalText) { SHA1 sha = new SHA1CryptoServiceProvider(); UTF8Encoding ue = new UTF8Encoding(); ...原创 2019-08-01 16:53:12 · 950 阅读 · 0 评论 -
Unity 关于GUID的一些实用例子
关于GUID的具体理解可以参考这篇文章: https://www.cnblogs.com/zhaoqingqing/p/5823927.html这里我们就简单理解为表示Unity文件的一个唯一标识符使用例(代码均为其他人的代码,这里引用):引用查找:应用场景:项目资源多得一匹,代码冗余复杂很多都没有用,想知道哪些没有用过,哪些还有用的情况下,怎么知道哪些地方用到了这些资源。既然GUI...原创 2019-08-02 10:26:52 · 15148 阅读 · 2 评论 -
VsCode Luaide调试XLua
本文适合人群!!!本文章只适合哪些刚接触luaide、vscode以及xlua的人群,旨在帮助大家理解官方文档里面一些不是很清楚的操作,告诉在哪儿用,怎么用,不会去详细解释为什么(我自己也不知道)。官方文档连接:https://www.showdoc.cc/luaide?page_id=713892723028836官方文档前面几步都很好理解,按着一步一步来就行,最主要的还是从“调试代码”这...原创 2019-09-21 19:28:54 · 3613 阅读 · 0 评论 -
Unity 关于Xlua HotFix中会报的一些错
首先明确一下xlua热更新的函数是:xlua.hotfix(CS.C#类型, "函数名", function(self) CS.UnityEngine.Debug.Log("修改了代码") end然后提下错误xlua.access, can not find c# type这个是由于类型名没有使用HotFix标签或者不在配置文件的类里面(配置文件的设置请查看官...原创 2019-09-22 15:44:45 · 2569 阅读 · 0 评论 -
使用UnityWebRequest实现断点续传
断点续传原理记录已经下载到的本地文件大小,向资源服务器发送请求,拿到剩下还有多少没有下载(有请求头可以实现),然后接着没有下载到的地方开始再继续下载。PS:只要确保是对同一个资源文件的下载操作,那么就不存在资源会下载错误的情况,当然如果你在断点续传的阶段发现资源服务器上的资源已经更新,那就得删除之前下载的文件然后重新下载。UnityWebRequest下载文件下载文件都是通过一个URL从资...原创 2019-10-04 18:34:32 · 3202 阅读 · 3 评论 -
TextMeshPro创建中文字体库
前提:使用的source字体库里面必须包含有你所需要的字创建:Window => TextMeshPro => Font Asset Creator基本的设置就不说了,主要需要设置的如下图:第一个地方是设置这个字体库大小的,因为我们要使用所有的汉字,所以这个地方尽量调大些。第二个地方是设置根据什么来生成字体库,默认是ASCII表,但是这种方式无法生成中文字体库,所以使用图...原创 2019-10-08 16:53:50 · 2487 阅读 · 0 评论 -
Unity ShaderGraph学习——溶解效果
原理:通过噪声产生alpha通道,并通过alphaClip来控制显示的内容节点及效果如图:步骤:首先右击创建一个简单噪声节点,调节scale值,使得噪声不是那么密集(具体值看个人而定),再将该节点连接到master节点的alpha值上。创建Time节点,将正弦值连接到alphaclip上面,这个时候就已经可以看到效果了,当值为0时完全显示,当值为1时完全消失,接下来就是优化边缘发光。...原创 2019-10-09 17:44:29 · 2079 阅读 · 1 评论 -
Unity Inspector扩展
一些函数的使用网上查了一下,编辑器扩展使用的基本都是EditorGUI和EditorGUILayout(这两个实现的效果区别不大,根据Unity手册解释说明后者是前者的自动布局版本),所以大家可以去查看一下官方手册上,看看有哪些效果,这里只记录一些我用过的它们的效果及基本用法。基本使用:一般来说,一个Inspector扩展对应一个脚本,脚本名一般取为“目标脚本名Editor”,而关联两个脚...原创 2019-05-12 15:25:32 · 928 阅读 · 0 评论 -
Shader学习笔记
GPU编程标准Direct和OpenGL两种编程标准,前者是微软提供的,一般用于Windows平台,而后者是Linux、Android、ios等都共同支持的标准。由这两种标准就衍生出来了集中GPU编程语言,诸如HLSL、Cg、GLSL等,在Unity里面,并不直接使用者三种语言去编写,而是用自己自定义的ShaderLab去编写Shader,之后再根据平台去编译成某种语言,一般现在Unity重点...原创 2019-04-27 17:23:34 · 182 阅读 · 0 评论 -
Unity 自主学习之用设计模式模拟王者荣耀(三)-- Easytouch实现技能指示器
技能指示器就是王者荣耀里面的技能按钮,这个按钮在点击之前是一个按钮的样子,但是点击之后,技能图标会缩小一定大小,并且会出现一个可以拖动的范围按钮,更joystick一样,但是经过从尝试发现单纯使用Easytouch提供的Joystick并不能够符合要求,所以我通过对其进行一下封装来实现这个技能指示器。UI结构如下:最外层是一个空物体,用来当作技能指示器来挂载脚本,Icon用于显示 技能...原创 2018-11-29 09:06:57 · 1914 阅读 · 0 评论 -
Unity 自主学习之用设计模式模拟王者荣耀(二)-- 中介者模式搭建英雄选择界面
效果图:UI搭建:首先这个界面里面分为4个UIPanel(关于Panel的UI框架我以前的博客里面有介绍,这里就不再赘述),分别未:SelectModelPanel:就是最开时的时候那两个并列的选择框,这种选择框用到了ScrollRect,而关于这种面板的介绍我也在以前的博客里面有过介绍,后面同一补充链接。只是这里的ScrollRect用的是GroupLayout,还有要注意的...原创 2018-11-19 19:40:46 · 950 阅读 · 1 评论 -
EasyTouch5 关于按钮、遥杆的动态添加事件
EasyTouch5里面的按钮都有一个ETCButton代码组件要动态绑定我们要先获得这个组件,然后再对相应的事件添加监听:和Unity自带的Button的按钮添加事件一样。joystick的动态绑定也类似:...原创 2018-11-23 22:05:13 · 1401 阅读 · 0 评论 -
Unity 横向文本提示框效果实现
主要是运用了ScrollRect来自动横向增加它的位置,达到其中文字自动移动的效果。先创建一个image作为背景(其他的UI也可),然后添加ScrollRect组件,以及Mask 2D组件:再在该imag下面创建一个文本,适合背景即可,可以给该脚本添加一个ContentSizeFitter来适应长文本的字数。给image添加脚本,代码如下:效果图:本教程百度经验...原创 2018-11-12 19:16:13 · 867 阅读 · 0 评论 -
Unity3D类似于王者荣耀的人物选定效果
先上效果图(怕标题描述得不清楚)要展示的位置我们放在左上角,游戏玩家(这里用方块代替)放在正中央,接下来看效果:左上角是我们展示的图片,是一个ui,可以调整大小,右边那个就是我们的游戏玩家,一般都放在摄像机看不到的地方。接下来直接给代码:整个代码很简单,只需要一个脚本即可:这个代码参考的是Unity官方的最新案例“Tanks!!!”里面的一部分,看着效果...原创 2018-11-08 22:20:28 · 1552 阅读 · 0 评论 -
Unity UGUI带滚动条的文本框显示
1、 创建一个 image或者Panel都行,用来作为背景:添加Scroll Rect组件和Mask 2D组件Scroll Rect组件:用来实现滚动列表的组件Mask 2D:与Mask组件作用一样, 用来遮罩,使其只显示它的部分,不会显示超出它的部分(这里解释得不清楚,看一下后面效果就能懂,另外新版的2018版的Mask组件没有作用,这个没有研究,只有用Mask 2D才有效果)2...原创 2018-10-25 12:48:23 · 11624 阅读 · 4 评论 -
JDK的安装及环境配置,以及一些问题的处理
下载JDK:JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html(或者百度“jdk下载”)选择自己系统对应的版本,注意图中要选择Accept License Agreement才能下载。(PS:8u191就是指的jdk1.8版本)安装JDK点击...原创 2018-10-19 20:39:24 · 415 阅读 · 0 评论 -
Unity中使用Newtonsoft反序列化Json的一些基本操作
声明:本帖仅为个人学习笔记,且本人表达可能不准确,如有帮助最好不过,写得不好请见谅,另欢迎各位大佬补充和纠错,多谢支持关于Newtonsoft:官网地址:https://www.newtonsoft.com/json/help/html/SerializingJSON.htm(里面有一些例子,方便各位去学习)json在线编辑器地址:http://www.bejson.com/ol...原创 2018-10-16 21:25:14 · 4892 阅读 · 0 评论 -
Unity 《愤怒的小鸟》涉及的主要知识
弹弓的弹力实现:LineRenderer:该组件主要用来描绘弹弓两边的弹簧线,弹弓是由两张图片组成,在这两个弹弓上添加LineRenderer组件之后,就可以在脚本里面控制其来划线,这里就是简单的在拖动鸟的时候画上两条直线就是了。参数没什么要改的,可以看官方文档看一下就行。弹簧结构:其中SlingShot就是上面的两张图片(分左右),其下面的子物体就是用来确定画线时另一个点的...原创 2019-01-27 15:52:04 · 2346 阅读 · 0 评论 -
Unity SpringJoint 2D参数及部分用法
参数列表:Enable Collision:两绑定的物体的Cillider是否允许发生碰撞,勾上为允许Connected Rigid Body:绑定的刚体Auto Configure Connected Anchor:速度为0时自动隐藏当前组件Anchor:组件一端在自己身上的相对位置Connected Anchor:组件另外一端在物体上的相对位置Auto Config...原创 2019-01-27 20:44:20 · 2579 阅读 · 0 评论 -
Unity Editor可能错误汇总(持续更新)
UI Error: You are pushing more GUIClips than you are popping. Make sure they are balanced)这个报错是说你规定的区域并不平衡,在Editor里面经常用到Begin…()和End…(),这两个必须相对应,即必须成对出现,如果你没有成对使用,就会报这个错,所以出错了就去检查每一个Begin…()是否有对应的En...原创 2019-03-26 11:35:16 · 5556 阅读 · 0 评论 -
Unity EidotrWindow相关学习(一)
EditorWindow简介:什么是EditorWindow就简单说一下,平时我们用的Game窗口之类的就是一个EditorWidow,它由Unity编辑器提供,只在Unity内部起作用,而不会被打包到游戏里面去。自己的Window想要创建自己的一个Window,只需要创建一个脚本并继承自EditorWindow即可,这样你就可以有一个可以用来打开的Window了,但是这还不够,只有通过...原创 2019-03-26 10:19:17 · 168 阅读 · 0 评论 -
Unity 协程的一些基本用法及测试(二)
上一章介绍了通过函数的方式启动的协程,这一章我们测试一下用函数名启动的协程,代码如下:using System;using System.Collections;using System.Collections.Generic;using UnityEngine;public class CorTest : MonoBehaviour { private void...原创 2019-03-14 21:29:08 · 444 阅读 · 0 评论 -
Unity 协程的一些基本用法及测试(一)
协程的流程:Unity的协程按我自己的理解就是将一段代码延迟一段时间后再去执行,它的执行顺序是先启动协程,然后执行协程内的代码一直到yield语句,然后继续执行主程的代码,直到yield条件满足后程序会再次跳到yield之后的语句继续执行协程内的语句,知道协程内的语句执行完,或者又遇到yield语句,就继续上述流程。(具体可以去百度协程,这里只是大概讲一下)无参数的协程的启用与禁止:...原创 2019-03-14 20:57:15 · 11053 阅读 · 1 评论 -
Unity 关于刚体抖动的问题
如果各位是带刚体的物体在地面移动的时候抖动,可以查看如下原因:(跟随镜头的抖动原因可能也出自于此)一、是刚体物体可能与其他碰撞体有持续的接触,刚体在接触面上移动,比如说刚体在一个带有boxcolider的地面上移动,这个时候你就会发现有些地方会导致刚体位置的变化,应为boxcolider有一定厚度,你人物的colider可能会由于重力等原因进入这个碰撞体,从而导致碰撞体挤压。二、 查看人物...原创 2019-03-06 22:10:20 · 5767 阅读 · 0 评论 -
IDEA 快速搭建Netty项目
网上有很多方式搭建Netty项目,但是都很繁琐,而且不够详细,然后这里列一下最简单的创建方式。一、新建项目:File->New->Project:然后新建maven项目,不知道maven的可以参考如下链接,其中对后面的项目结构也有说明:https://www.cnblogs.com/whgk/p/7112560.html填名称和项目标签,示例如下:填...原创 2019-02-20 16:15:49 · 9288 阅读 · 0 评论 -
Unity Behaviour.enabled作用
这个属性的官方文档描述为:Enabled Behaviours are Updated, disabled Behaviours are not.This is shown as the small checkbox in the inspector of the behaviour.enabled为true是更新,为false时不更新。就是说在enabled为false时会禁用本...原创 2019-02-04 16:58:04 · 2179 阅读 · 0 评论 -
向量大小比较之:Vector3.sqrMagnitudey用法
Vector3.sqrMagnitude 是指长度的平方,也就是Vector3.magnitude的平方计算向量大小的平方会比计算向量的大小要快很多,因为向量的大小由勾股定理得出,所以有开方操作,如果只是单纯的比较两个向量的大小,可以使用sqrMagnitude会快很多。...原创 2019-02-04 16:20:55 · 18307 阅读 · 2 评论