Unity
文章平均质量分 64
@onelei
《游戏AI程序设计实战》作者
展开
-
OneString2.0版本更新-0GC拼接字符串
0GC拼接字符串原创 2022-06-19 21:18:30 · 610 阅读 · 0 评论 -
通过图集加载出的图片残留其他Sprite的解决方案
通过图集加载出的图片残留其他Sprite的解决方案游戏开发中有些UI界面的图片是动态加载的, 相信大部分开发者都遇到过下面这种情况我自己画的(灵魂画手, 大家不要在意, 哈哈哈), 实际加载出来的Sprite却是下面这种情况.就是通过图集加载出来的图片残留有其他的图片在上面. 我们通过观察对应的图集如下很明显, 通过图集取出来的Sprite图片把它附近的其他Sprite也加载出来了一部分. 以前针对NGUI的时候, 我们是通过设置图集里面的图片的间隔, 将间隔增大来实现Sprite加载出来的原创 2021-12-03 21:45:02 · 783 阅读 · 0 评论 -
Wwise安卓输入框弹起没有声音的问题
Wwise安卓输入框弹起没有声音的问题最近在查一个Wwise在安卓机上的一个问题,就是每次点击输入框,弹出输入法的时候声音都会被停止,当关闭输入框的时候,游戏背景音会重新播放。问题分析:输入框弹起的时候游戏还在继续,安卓里面是不同Activity之间进行通信,因此当输入法被打开的时候,游戏此时是失去了焦点,此时游戏背景音不应该被停掉。OnApplicationFocus和OnApplicationPauseUnity内置了两个函数OnApplicationFocus和OnApplicationPa原创 2021-10-26 17:24:29 · 262 阅读 · 0 评论 -
Unity游戏摇杆解决方案--OneJoystick
Unity游戏摇杆解决方案–OneJoystick通过摇杆的输入来控制玩家的移动是常见的游戏控制方案。目前市面上的遥感方案缺少具体的示例,有些方案功能又过于复杂。OneJoystick是一个相对来说轻量的遥感解决方案。它不需要特别设置Transform的pivot锚点,全部都是(0.5,0.5)的中心点对齐方式。适配Pc、Android、IOS等多个平台。整个插件需要的图片资源就是大圆、小圆、箭头三个图片。简单来说OneJoystick 是一个简单易用可以高度定制化的游戏虚拟摇杆。特点内置遥原创 2021-02-25 22:46:08 · 965 阅读 · 0 评论 -
OneTweenPro:OneTween Pro版
OneTweenPro:OneTween Pro版OneTweenPro不仅包含了OneTween的所有功能,同时包含了DOTween的所有功能。目前来说基本上能满足市面上所有Tween的功能,下面将详细列出。OneTweenPro 是一个更方便高效的无GC的Unity下的Tween动画插件。不仅仅所见即所得,同时包含了市面主流Tween的功能。特点OneTweenPro 不仅包含OneTween的所见即所得等所有功能,同时还有如下的独特之处:支持DOMove、DOMoveX、DOMoveY原创 2020-10-09 22:26:09 · 317 阅读 · 0 评论 -
3D世界屏蔽UI的响应事件
3D世界中屏蔽UI的响应事件在Unity游戏开发中,我们会经常遇到这样一个问题:拖拽3D场景来预览当前的世界。即通过拖拽鼠标来控制相机的位置。但是场景中一般都会有UI界面悬浮在最上层。当我们滑动UI界面上面的滚动列表的时候,会发现此时的场景会跟着移动。这是我们不想看到的。正确的结果应该是拖动场景的时候相机才移动,这才符合我们的设定。因此就需要一个接口来判断当前鼠标是否点击到了UI上面。public bool IsPointerOverGameObject() { if (Inp原创 2020-05-15 14:40:23 · 478 阅读 · 0 评论 -
Unity下所见即所得动画方案–OneTween
Unity下所见即所得动画方案–OneTween做过游戏UI动画的都知道UI动画一般包含Position, Scale, Rotation, Alpha等。一般都是使用DoTween等插件,通过代码设置UI的参数。但是市面上的UI动画插件总是缺少一个所见即所得的功能。就是在编辑器模式下编辑动画,就能够直接看到动画效果,而不需要运行游戏就可以预览动画。这就是下面要介绍的所见即所得的UI动画插件On...原创 2020-05-05 19:58:39 · 793 阅读 · 0 评论 -
华为手机安卓9以上获取系统多语言出错的解决方案
华为手机安卓9以上获取系统多语言出错的解决方案事情的起因是做海外项目的时候需要进行多语言处理。我们通过Unity自带的Application.systemLanguage接口获取手机的语言环境一直没啥问题。但是在华为手机的安卓9系统的时候,我们在切换到繁体中文之后,通过Unity的接口发现使用显示是ChineseSimplified简体中文。一开始我们想的是Unity引擎可能没有兼容到,所以...原创 2020-03-23 14:27:31 · 1942 阅读 · 0 评论 -
【Unity Assetstore】上传插件
【Unity Assetstore】上传插件最近做了一个Unity插件,需要上传到Unity的AssetStore,因此记录一下。Publisher第一步要先将自己的普通Unity账号转换成Publisher–就是能够上传Unity商店的账号。打开网址 https://publisher.assetstore.unity3d.com/sales.html ,选择网址中的Create a ...原创 2020-03-08 22:40:28 · 1439 阅读 · 0 评论 -
[Unity Shader]凌波微步效果
[Unity Shader]凌波微步效果相信很多人都看过天龙八部,里面的段誉有一个技能就是凌波微步:移动的时候人先到,衣角跟随其后。说白了就是移动时有一个残影跟着他。下面先看下最终效果下面我们看如何实现上面的效果。思路:1.既然需要移动,那么就需要一个3维(x,y,z三个方向)的数据存储,同时还需要一个变量用来表示偏移强度。2.需要一个2d贴图来做采样因此Shader代码很快就出来了...原创 2020-02-10 21:31:07 · 778 阅读 · 0 评论 -
UGUI自动化–正篇UIBaseGenerate
UGUI自动化–正篇UIBaseGenerate通过UGUI自动化的前面几篇文章介绍的常用UGUI控件的封装,接下来终于要步入正题了。没错今天就开始介绍如何根据UI控件的名字自动生成变量然后自动将控件和变量序列化。废话不多说,先上图。UISample_UI如上图的界面所示,我们搭建一个简单界面如上所示,一个按钮以及一个界面标题。接下来我们看下其对应的Prefab结构。请注意Prefab...原创 2020-02-06 20:27:28 · 325 阅读 · 0 评论 -
UGUI自动化–QButton&QToggleButton&QToggleButtonGroup
UGUI自动化–QButton&QToggleButton&QToggleButtonGroup本系列来自https://github.com/onelei/Lemon/tree/master/Assets/QGUI 今天接着介绍UGUI自动化中的Button和ToggleButton控件,相信读了前几篇文章的渐渐理解了设计思路。QButton继承自UGUI的Button组件,Q...原创 2020-02-06 16:00:27 · 406 阅读 · 0 评论 -
UGUI自动化–QImage、QRawImage
UGUI自动化–QImage、QRawImage今天接着介绍UGUI自动化中的Image和RawImage控件,为什么要放在一起介绍呢?主要是封装的功能和代码都差不多。QImage继承自UGUI的Image组件,QRawImage继承自UGUI的RawImage组件。两个Image组件都是增加了一个多语言KEY的显示。图片也需要多语言,因此通过一个string类型的KEY,根据不同语言动态设置即...原创 2020-02-05 12:58:52 · 337 阅读 · 0 评论 -
UGUI自动化–QText
UGUI自动化–QText从本篇开始打算写一些Unity的UI自动化相关的文章。自动化的核心思想是根据UI控件的名字自动生成变量然后自动将控件和变量序列化。在开始之前先介绍一下自己封装的文本控件QText,它继承自UGUI的Text组件。为什么要封装一层呢?由于Unity是外国人写的,UGUI的Text组件里面的参数不太符合国内的使用习惯。UGUI的Text组件里面的字体、字号、字体颜色、文本的...原创 2020-02-05 12:56:57 · 354 阅读 · 0 评论 -
Unity打包apk常见问题汇总
Unity打包apk常见问题汇总apk安装失败Unity出Android包之后,apk一直安装不上,通过adb命令行安装发现了这样一个问题Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl1859808974.tmp/base.apk: Attemp...原创 2019-12-12 10:50:13 · 1822 阅读 · 0 评论 -
Unity优化全屏UI的Overdraw之ImageBox
Unity优化全屏UI的Overdraw之ImageBox我们在Unity下面做UI的时候需要给每个界面放一个背景图,这个背景图有的时候是以弹窗的形式出现,我们不需要看到这个背景,只需要让其能够响应raycastTarget,也就是希望该背景能够阻挡住鼠标点击弹窗下面的按钮。通常的做法是加一个空的Image如下所示。我们修改这个Image的Alpha值为0,表示透明;同时勾选RaycastT...原创 2019-12-06 21:16:52 · 905 阅读 · 0 评论 -
Unity游戏开发性能优化篇
Unity游戏开发性能优化篇MonoBehaviour可以写一个基类继承自MonoBehaviour,然后所有的UI脚本继承自该基类,保证游戏中尽量较少的脚本继承自MonoBehaviour,所有的Update执行的时候,都使用基类从MonoBehaviour继承下来的Update函数。不要各自继承使用。总之一句话,继承自MonoBehaviour的脚本数量越少越好,最好就一份。获取组件U...原创 2019-12-03 20:22:44 · 657 阅读 · 3 评论 -
Unity Debug Dll 编写
Unity Debug Dll 编写Debug.Log存在的问题在Unity调试代码的时候,我们经常要用到Debug.Log函数。 UnityEngine.Debug.Log(message);平时开发的时候需要打印Log,但是出包的时候需要屏蔽掉对应的Log打印。这时候有人或许说了,Unity提供了UNITY_DDITOR编辑器下的宏,我们调用Log函数的时候可以通过添加宏来控制显示。...原创 2019-12-02 21:46:41 · 358 阅读 · 0 评论 -
Unity打开同一个工程目录
Unity打开同一个工程目录在使用Unity调试项目工程的时候,有时候需要使用Unity打开同一个目录。但是Unity并不支持打开同一个工程,因为路径是相同的。也就是说我们必须要创建一个新目录,然后重新使用svn或者git来拉取项目。如果项目文件很多的话,该过程耗时很长。mklink既然Unity不支持,我们就需要从Windows系统入手,看看能不能创建一个新目录,但是该目录是一个快捷方式,...原创 2019-11-14 16:21:07 · 756 阅读 · 1 评论 -
【Unity UGUI】屏幕坐标转换
【Unity UGUI】屏幕坐标转换Unity的RectTransformUtility函数里面提供了常用的坐标系之间的转换关系。因为RectTransformUtility里面提供的函数是环形结构,所以屏幕坐标,UGUI坐标,世界坐标三者之间可以相互转换。由于函数都需要用到场景相机和UGUI相机,所以定义两个相机变量。 /// <summary> /// 场景...原创 2019-11-14 13:47:31 · 3326 阅读 · 0 评论 -
Unity红点系统的实现
Unity红点系统的实现在使用Unity开发游戏的时候经常用到红点系统,当玩家点击之后,或者收到服务器数据之后,都需要刷新红点的显示。如果每个人都自己写自己的红点模块,会增加不少的重复任务量,因此迫切需要一个通用的红点系统,其他模块只需要编写自己模块的红点类型和对应的是否显示红点的判断即可。因此RedDotManager应运而生。案例下面通过一个邮件红点来演示如何操作使用。如下图,当点击系统...原创 2019-11-13 16:42:32 · 6004 阅读 · 4 评论 -
Unity FlappyBird游戏实现
Unity FlappyBird游戏实现FlappyBird下面看看实现效果实现我们需要规划一下Bird的位置为坐标(0,0),Bird不用在水平方向上移动,只需要将整个背景向左移动即可。首先地板BackGround分为两块,两块地板一起向左移动,当地板超出视野的时候将其移动到最右边,然后接着向左移动,以此来实现循环滚动的效果。BackGround_Left坐标是(0,0,0),B...原创 2019-10-16 15:20:38 · 864 阅读 · 0 评论 -
Unity UGUI 数字使用图片显示-BMFont
Unity UGUI 数字使用图片显示-BMFontBMFont之前使用Cocos引擎的时候需要用到艺术字也就是将数字使用美术给的图片来代替显示,也就是要做一个新字体专门用来显示艺术字,当时用的是BMFont来制作字体。那么问题来了,在Unity下面的UGUI能否使用呢?答案当然是OK的啦。下面我们来看下如何使用BMFont。从网站https://www.angelcode.com/pro...原创 2019-10-15 18:17:40 · 3095 阅读 · 7 评论 -
Unity AssetBundle 教程
Unity AssetBundle 教程AssetBundle是Unity用来处理资源热更新的,下面简单介绍AssetBundle的所有操作。本教程使用的Unity版本:Unity 2018.2.12f1 (64-bit)AssetBundle打包设置AssetBundle名字手动设置打包之前按照上图所示的方法,设置一下AssetBundle的名字。自动设置将需要进行AssetBu...原创 2019-10-12 20:54:23 · 498 阅读 · 0 评论 -
【Unity UGUI】获取UGUI界面的屏幕大小
【Unity UGUI】获取UGUI界面的屏幕大小UGUI屏幕大小说到屏幕大小我们可能会想到Unity自带的Screen.width,但是其实UGUI的屏幕大小是根据我们的适配情况自己算出来的,它和Screen.width是不一样的。我们在做分辨率适配的时候需要获取到当前的屏幕尺寸,也就是图中的箭头所示大小。具体可以通过以下方法获取 /// <summary> ...原创 2019-10-04 11:18:25 · 3446 阅读 · 0 评论 -
Unity查找图片被哪个Prefab引用
Unity查找图片被哪个Prefab引用Unity中的每个物体都有一个唯一Guid ID , Prefab里面都存有引用到的Guild ID 。 所以我们只要在Prefab信息中找到该图片的Guid ID就表明该Prefab引用到了该图片。完整代码如下:using UnityEditor;using UnityEngine;using System.Collections.Generic...原创 2019-07-22 14:23:13 · 5865 阅读 · 2 评论 -
Unity C# 多线程同时写入一个文件
ThreadFileWriterUnity C# 多线程同时写入一个文件是什么 ThreadFileWriter是一个Unity下可以多线程对文件进行写入的框架。为什么 当我们在Unity的多线程中要调试一些问题的时候,需要写入文件查看问题在哪。比如网络问题,这个时候在主线程下就无法将信息很好的打印出来。这就诞生了ThreadFileWriter。怎么做我们都知道多线程下要争...原创 2019-07-01 20:32:54 · 1750 阅读 · 0 评论 -
2019新版ML-Agents首次训练注意事项
2019新版ML-Agents首次训练注意事项Unity的ML-Agents的安装步骤参考官网即可。官网(https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Readme.md )。windows下面的安装步骤注意需要参考(https://github.com/Unity-Technologies/ml-agents...原创 2019-05-15 15:54:04 · 3338 阅读 · 2 评论 -
Unity的Android的SDK导入注意事项
Unity的Android的libs导入注意事项Unity的Android的SDK在导入libs的时候只支持以下三个平台:armeabiarmeabi-v7ax86原创 2018-02-23 17:11:54 · 765 阅读 · 0 评论 -
[Unity3D]UGUI 新手引导遮罩控件
[Unity3D]UGUI 新手引导遮罩控件强制性引导UI控件,关键区域镂空,自动调整关键区域大小。* 效果如图: * 使用结构: 代码块示例代码:using UnityEngine;using System.Collections;using UnityEngine.UI;using System.Collections.Generic;using UnityEngine.Seriali转载 2017-06-05 19:32:17 · 4358 阅读 · 1 评论 -
UIWrapContent的使用
using UnityEngine;using System.Collections.Generic;namespace Assets.QWrapContent{ public class ScrollSample : MonoBehaviour { [SerializeField] UIScrollView ScrollView;原创 2017-03-14 16:56:13 · 1095 阅读 · 0 评论 -
NGUI UILabel 代码换行
NGUI3.9 UILabel 代码换行表里面填的是 \n 读取出来的会变成 \n 要将 \n 重新变成 \n 才能够换行tableString = tableString.Replace("\\n","\n");Content.text = tableString;原创 2015-12-18 16:08:35 · 6070 阅读 · 2 评论 -
KeyStore简介和使用
cmd下面敲命令C:\Program Files\Java\jdk1.8.0_91\bin> keytool -v -list -keystore ***.keystore原创 2016-08-02 18:03:20 · 19812 阅读 · 0 评论 -
[Shader] UnityShader系列---灰白效果
支持 NGUI的 UIPanel 的SoftClip无图无真相修改 Unlit - Transparent Colored.shader如下:Shader "Unlit/Transparent Colored"{ Properties { _MainTex ("Base (RGB), Alpha (A)", 2D) = "black" {} }原创 2015-11-18 18:07:57 · 1248 阅读 · 0 评论 -
Unity UILabel 输入空格自动换行的解决
NGUI 会将空格自动换成换行符号, 这样就会使得我们想在一段文字的开头输入两个空格的时候出现问题.找到NGUI 的NGUIText.cs脚本文件中的 ReplaceSpaceWithNewline函数, 修改如下: /// <summary> /// Convenience function that ends the line by replacing a space wi原创 2015-11-09 17:30:57 · 8368 阅读 · 2 评论 -
[UnityShader笔记] 深度写入ZWrite&深度测试ZTest
UnityShader笔记(二)深度写入ZWrite&深度测试ZTest创建两个Cube,一个蓝色距离相机近点;一个红色距离相机远点。如图所示红Shader和蓝Shader使用相同的代码,但是Shader的名字要不一样,方便后面进行对比测试。红蓝色Shader代码如下:Shader "My/SampleShader2"{ Properties { _Color("Col...原创 2019-08-18 17:44:11 · 1531 阅读 · 0 评论 -
[UnityShader笔记] 工具
UnityShader笔记(零)工具工欲善其事必先利其器编写UnityShader需要一个好的IDE和语法高亮插件,这里推荐VS2017和ShaderlabVS-2017-0.8插件。下载地址ShaderlabVS-2017-0.8插件下载地址为:http://blog.shuiguzi.com/2014/10/28/Release/安装好之后,效果如下输入下划线_就会弹出各种系统...原创 2019-08-16 13:22:59 · 253 阅读 · 0 评论 -
【Unity Image Effect】Vignetting 光晕效果
【Unity Image Effect】Vignetting 光晕效果Vignetting 光晕效果 :可以实现场景中的聚焦,以及对中心之外的物体做模糊处理是什么上图是王者荣耀的游戏截图,王者荣耀在战斗结束的时候都会做背景模糊处理,场景模糊的效果很赞。怎么做Unity的 Image Effect插件有很多自带的各种效果处理。因此我们先来看看有没有合适的。导入Unity的 Image ...原创 2019-09-23 21:10:57 · 2365 阅读 · 0 评论 -
【Unity Image Effect】Blur 模糊效果
Unity背景模糊效果实现技术最开始是想自己写Shader做模糊处理,网上也参考了很多Shader的实现,发现效果都不理想。C#代码做高斯模糊处理效果也差强人意。而且UI界面打开的时候如果做背景模糊,处理耗时太长。后来发现Unity的assetstore里面的Legacy Image Effects插件有相机模糊处理功能,因此打算尝试一下。将该插件导入原创 2019-09-23 20:29:32 · 4852 阅读 · 0 评论 -
【Unity优化】Unity字符串String优化
【Unity优化】Unity字符串String优化System.String通过跟踪Unity的string,我们看到了Unity给我们提供的各种string接口。发现该代码来自mscorlib.dll,通过路径直接找到该dllEditor\Data\MonoBleedingEdge\lib\mono\unity\mscorlib.dll我们通过dnSpy这个工具来对mscorlib....原创 2019-09-20 13:45:24 · 3765 阅读 · 0 评论