- 博客(79)
- 资源 (1)
- 收藏
- 关注
原创 处女作:《游戏AI程序设计实战》2019.4.1
不知不觉再游戏行业从事5年有余了,感谢这些年来一直有贵人相助,一直想写本关于AI方面的书,这个愿望终于实现了。 希望能够帮助到游戏AI开发者,讨论Q群:754814245...
2019-10-21 10:11:29 2239 2
原创 让GPT帮你做游戏
最近GPT很火, 国内很多美术已经使用上了开源的stable diffusion webui还有收费版的Midjourney来辅助开发,之前有让GPT生成一个贪吃蛇的html来直接运行起来的. 这是GPT在html上面的应用.那么针对Unity游戏开发有没有合适的GPT场景呢?答案是肯定的.
2023-03-27 09:24:26 1515
原创 Unity性能测试方案UPR教程
相信很多做Unity性能测试方案用UWA的比较多,但是对Unity官方的UPR了解的比较少,目前在做性能优化相关,大致研究了一下UPR的使用,这里做个简单的记录.从官方https://upr.unity.cn/下载所需的UPR Desktop的Windows桌面版和UPR Tools的Package.
2023-03-22 21:08:06 611
原创 Unity图片转字符画
将一张图不断的放大, 最后会显示成一个个色块, 这个其实就是图片的像素点, 图片都是由像素点组成的. 那么我们将对应的颜色替换成相应的字符, 即可实现字符画颜色的色值通常是RGB组成, 将0~255的颜色先进行灰度调整, 然后把每个位置对应的像素点和字符做个对应即可.先定义一下需要的字符(按照从稠密到稀疏的方向做排序, 反过来也可以,影响的只是底图的显示)然后灰度处理色块和字符映射Unity的rgb是0-1范围,这里为了处理方便转换到0-255了,然后字符的下标为了避免超出范围,这里是除以256最后看
2022-06-29 19:09:44 692
原创 通过图集加载出的图片残留其他Sprite的解决方案
通过图集加载出的图片残留其他Sprite的解决方案游戏开发中有些UI界面的图片是动态加载的, 相信大部分开发者都遇到过下面这种情况我自己画的(灵魂画手, 大家不要在意, 哈哈哈), 实际加载出来的Sprite却是下面这种情况.就是通过图集加载出来的图片残留有其他的图片在上面. 我们通过观察对应的图集如下很明显, 通过图集取出来的Sprite图片把它附近的其他Sprite也加载出来了一部分. 以前针对NGUI的时候, 我们是通过设置图集里面的图片的间隔, 将间隔增大来实现Sprite加载出来的
2021-12-03 21:45:02 812
原创 Wwise安卓输入框弹起没有声音的问题
Wwise安卓输入框弹起没有声音的问题最近在查一个Wwise在安卓机上的一个问题,就是每次点击输入框,弹出输入法的时候声音都会被停止,当关闭输入框的时候,游戏背景音会重新播放。问题分析:输入框弹起的时候游戏还在继续,安卓里面是不同Activity之间进行通信,因此当输入法被打开的时候,游戏此时是失去了焦点,此时游戏背景音不应该被停掉。OnApplicationFocus和OnApplicationPauseUnity内置了两个函数OnApplicationFocus和OnApplicationPa
2021-10-26 17:24:29 273
原创 手把手教你实现抖音里面的漫画脸
手把手教你实现抖音里面的漫画脸抖音里面有一个漫画脸特效,上传一个自拍的头像,会自动给你生成一个漫画脸。市面上有些拍照软件提供了漫画脸的功能,不过需要付费。相信很多人都想拥有一个属于自己的漫画头像。本篇文章将为你解开漫画风格的图像是如何生成的。提到漫画风格自然离不开机器学习、图像处理等各种算法。这里不会介绍复杂的理论和各种数学公式,而是针对目前的开源方案ganilla进行讲解如何操作。使用效果武康路在这里插入图片描述风景千岛湖大话西游如何实现1.从Github上面下载https
2021-02-27 16:21:15 2977 2
原创 Unity游戏摇杆解决方案--OneJoystick
Unity游戏摇杆解决方案–OneJoystick通过摇杆的输入来控制玩家的移动是常见的游戏控制方案。目前市面上的遥感方案缺少具体的示例,有些方案功能又过于复杂。OneJoystick是一个相对来说轻量的遥感解决方案。它不需要特别设置Transform的pivot锚点,全部都是(0.5,0.5)的中心点对齐方式。适配Pc、Android、IOS等多个平台。整个插件需要的图片资源就是大圆、小圆、箭头三个图片。简单来说OneJoystick 是一个简单易用可以高度定制化的游戏虚拟摇杆。特点内置遥
2021-02-25 22:46:08 985
原创 Go语言开发Excel导表工具(下)
Go语言开发Excel导表工具(下)前言本篇开始介绍导表工具OneExcel(https://github.com/onelei/oneexcel)的使用。OneExcel是使用Go语言开发,导出文件为lua配置表文件。Excel库Go语言的Excel处理库还是挺多的,目前对比了两个常用的Excel处理库github.com/360EntSecGroup-Skylar/excelizegithub.com/tealeg/xlsx经过测试发现xlsx库读取excel里面的内容优于exceli
2021-01-20 11:55:00 655 2
原创 Go语言开发Excel导表工具(上)
Go语言开发Excel导表工具(上)前言游戏开发中经常会遇到将Excel文件导出配置的需求,鉴于之前的导表工具面对数据比较多的表格(尤其是多语言表格)导致导表速度很慢,因此想自己实现一个导表工具。调研目前市面上编程语言比较多:Node、Python、C#、Go… 以前项目中有用C#的也有用Python的,对比发现Python导表还是挺快的。(后来发现其实使用不同的Excel读取插件,执行效率还各有不同)在前期调研中发现了网站https://zhuanlan.zhihu.com/p/29847628
2021-01-15 20:34:21 609
原创 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 328
原创 Lua的String字符串拼接
Lua的String字符串拼接每个语言都会遇到字符串拼接的问题。上回说到C#的字符串拼接Concat,我们知道C#中拼接许多字符串一般不用“+”号,因为每次+操作都会产生一个临时的字符串。所以C#里面就提供了StringBuilder–可变字符串来拼接,直到最后tostring的时候才会产生最终的string字符串。Lua语言里面默认是” …“两个英文点号来表示字符串的拼接。但是当我们需要拼接多个字符串的时候,同样的思路table.concattable.concat (list [, sep [,
2020-08-02 22:08:23 23723 3
原创 临时字符串0GC解决方案--OneString
OneString 是一个 0 GC ToString 解决方案。传统的数字或者bool变量转换成string的时候会产生GC。由于string是不可变的,每次修改string的值,内部都会生成一个新的string。如果我们需要临时打印某个值,使用系统提供的 ToString 函数就会不可避免地产生一个新的string,我们其实并不需要保存这个string的值,仅仅是为了打印一下,这是我们不想看到的结果。因此如果有一个临时字符串在我们使用之后,自动回收重复利用,并且不会产生GC就好了。OneString .
2020-05-29 11:02:34 1647
原创 3D世界屏蔽UI的响应事件
3D世界中屏蔽UI的响应事件在Unity游戏开发中,我们会经常遇到这样一个问题:拖拽3D场景来预览当前的世界。即通过拖拽鼠标来控制相机的位置。但是场景中一般都会有UI界面悬浮在最上层。当我们滑动UI界面上面的滚动列表的时候,会发现此时的场景会跟着移动。这是我们不想看到的。正确的结果应该是拖动场景的时候相机才移动,这才符合我们的设定。因此就需要一个接口来判断当前鼠标是否点击到了UI上面。public bool IsPointerOverGameObject() { if (Inp
2020-05-15 14:40:23 506
原创 Unity下所见即所得动画方案–OneTween
Unity下所见即所得动画方案–OneTween做过游戏UI动画的都知道UI动画一般包含Position, Scale, Rotation, Alpha等。一般都是使用DoTween等插件,通过代码设置UI的参数。但是市面上的UI动画插件总是缺少一个所见即所得的功能。就是在编辑器模式下编辑动画,就能够直接看到动画效果,而不需要运行游戏就可以预览动画。这就是下面要介绍的所见即所得的UI动画插件On...
2020-05-05 19:58:39 811
原创 华为手机安卓9以上获取系统多语言出错的解决方案
华为手机安卓9以上获取系统多语言出错的解决方案事情的起因是做海外项目的时候需要进行多语言处理。我们通过Unity自带的Application.systemLanguage接口获取手机的语言环境一直没啥问题。但是在华为手机的安卓9系统的时候,我们在切换到繁体中文之后,通过Unity的接口发现使用显示是ChineseSimplified简体中文。一开始我们想的是Unity引擎可能没有兼容到,所以...
2020-03-23 14:27:31 1971
原创 【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 1462
原创 【Android SDK】安卓中String的坑
【Android SDK】安卓中String的坑最近一直在查项目中一个SDK相关的bug,我们通过C#代码给java层传入一个string,然后在java层解析出对应的json数据。在使用JSONObject的时候抛出了一个异常"System.err: org.json.JSONException: End of input at character 0 of"。 public void Sa...
2020-03-06 16:38:36 702
原创 【算法】洗牌算法Fisher–Yates shuffle
【算法】洗牌算法Fisher–Yates shuffleC#语言一般都是调用随机函数Random.Next函数,在一个范围内随机出一个数字。但是当我们需要将n个数据随机选择k个数。怎么办呢?方案一:随机出一个数,然后从剩下的数里面接着随机。方案二:每次都从n个数据里面随机出一个数,遇到重复的,放回去。接着随机,直到随机出k个数。我们的目的是不管用哪个方案,我们都需要保证选出的数要是等概率的...
2020-03-03 18:32:03 577
原创 字符串优化加强版–StringPool
字符串优化加强版–StringPool之前写过一篇string字符串优化相关的文章,但是里面是使用一个static静态变量。先看下之前的代码using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Lemon{ public class QStrin...
2020-02-17 12:53:59 566
原创 [Unity Shader]凌波微步效果
[Unity Shader]凌波微步效果相信很多人都看过天龙八部,里面的段誉有一个技能就是凌波微步:移动的时候人先到,衣角跟随其后。说白了就是移动时有一个残影跟着他。下面先看下最终效果下面我们看如何实现上面的效果。思路:1.既然需要移动,那么就需要一个3维(x,y,z三个方向)的数据存储,同时还需要一个变量用来表示偏移强度。2.需要一个2d贴图来做采样因此Shader代码很快就出来了...
2020-02-10 21:31:07 789
原创 UGUI自动化–正篇UIBaseGenerate
UGUI自动化–正篇UIBaseGenerate通过UGUI自动化的前面几篇文章介绍的常用UGUI控件的封装,接下来终于要步入正题了。没错今天就开始介绍如何根据UI控件的名字自动生成变量然后自动将控件和变量序列化。废话不多说,先上图。UISample_UI如上图的界面所示,我们搭建一个简单界面如上所示,一个按钮以及一个界面标题。接下来我们看下其对应的Prefab结构。请注意Prefab...
2020-02-06 20:27:28 335
原创 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 413
原创 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 349
原创 UGUI自动化–QText
UGUI自动化–QText从本篇开始打算写一些Unity的UI自动化相关的文章。自动化的核心思想是根据UI控件的名字自动生成变量然后自动将控件和变量序列化。在开始之前先介绍一下自己封装的文本控件QText,它继承自UGUI的Text组件。为什么要封装一层呢?由于Unity是外国人写的,UGUI的Text组件里面的参数不太符合国内的使用习惯。UGUI的Text组件里面的字体、字号、字体颜色、文本的...
2020-02-05 12:56:57 368
原创 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 1850
原创 Unity优化全屏UI的Overdraw之ImageBox
Unity优化全屏UI的Overdraw之ImageBox我们在Unity下面做UI的时候需要给每个界面放一个背景图,这个背景图有的时候是以弹窗的形式出现,我们不需要看到这个背景,只需要让其能够响应raycastTarget,也就是希望该背景能够阻挡住鼠标点击弹窗下面的按钮。通常的做法是加一个空的Image如下所示。我们修改这个Image的Alpha值为0,表示透明;同时勾选RaycastT...
2019-12-06 21:16:52 919
原创 Unity游戏开发性能优化篇
Unity游戏开发性能优化篇MonoBehaviour可以写一个基类继承自MonoBehaviour,然后所有的UI脚本继承自该基类,保证游戏中尽量较少的脚本继承自MonoBehaviour,所有的Update执行的时候,都使用基类从MonoBehaviour继承下来的Update函数。不要各自继承使用。总之一句话,继承自MonoBehaviour的脚本数量越少越好,最好就一份。获取组件U...
2019-12-03 20:22:44 692 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 369
原创 Unity打开同一个工程目录
Unity打开同一个工程目录在使用Unity调试项目工程的时候,有时候需要使用Unity打开同一个目录。但是Unity并不支持打开同一个工程,因为路径是相同的。也就是说我们必须要创建一个新目录,然后重新使用svn或者git来拉取项目。如果项目文件很多的话,该过程耗时很长。mklink既然Unity不支持,我们就需要从Windows系统入手,看看能不能创建一个新目录,但是该目录是一个快捷方式,...
2019-11-14 16:21:07 767 1
原创 【Unity UGUI】屏幕坐标转换
【Unity UGUI】屏幕坐标转换Unity的RectTransformUtility函数里面提供了常用的坐标系之间的转换关系。因为RectTransformUtility里面提供的函数是环形结构,所以屏幕坐标,UGUI坐标,世界坐标三者之间可以相互转换。由于函数都需要用到场景相机和UGUI相机,所以定义两个相机变量。 /// <summary> /// 场景...
2019-11-14 13:47:31 3354
原创 Unity红点系统的实现
Unity红点系统的实现在使用Unity开发游戏的时候经常用到红点系统,当玩家点击之后,或者收到服务器数据之后,都需要刷新红点的显示。如果每个人都自己写自己的红点模块,会增加不少的重复任务量,因此迫切需要一个通用的红点系统,其他模块只需要编写自己模块的红点类型和对应的是否显示红点的判断即可。因此RedDotManager应运而生。案例下面通过一个邮件红点来演示如何操作使用。如下图,当点击系统...
2019-11-13 16:42:32 6067 4
原创 【数据结构】引言
【数据结构】引言是什么相信很多程序员对数据结构是既熟悉又陌生。熟悉的是学校里面要学,公司面试基本都会问数据结构相关的问题,但是呢,大部分程序员平时工作中用到的不多,所以是长时间不用会很陌生。。程序员对数据结构可谓是又爱又恨。哈哈,其实数据结构并没有大家想象中这么难,由于最近在看数据结构相关的资料,故把里面比较好的地方分享出来,做个笔记,旨在通俗易懂。为什么很多人会觉得学个数据结构平时根本...
2019-11-09 15:35:10 535
原创 Windows下的.Net的软件包管理器-NuGet
是什么NuGet是.NET的软件包管理器。 NuGet客户端工具提供了生成和使用软件包的功能。 NuGet Gallery是所有软件包作者和使用者都使用的中央软件包存储库。怎么做假如我们需要安装CsvHelper,只需要在控制台输入Install-Package CsvHelper...
2019-10-23 19:54:13 594
原创 【Python】多线程简单案例
【Python】多线程简单案例新建TestThread.py文件from threading import Threadimport datetimedef Test1(): timeNow1 = datetime.datetime.now() count = 0 while count < 5: count += 1 print("...
2019-10-18 17:27:51 168
原创 Unity FlappyBird游戏实现
Unity FlappyBird游戏实现FlappyBird下面看看实现效果实现我们需要规划一下Bird的位置为坐标(0,0),Bird不用在水平方向上移动,只需要将整个背景向左移动即可。首先地板BackGround分为两块,两块地板一起向左移动,当地板超出视野的时候将其移动到最右边,然后接着向左移动,以此来实现循环滚动的效果。BackGround_Left坐标是(0,0,0),B...
2019-10-16 15:20:38 883
原创 Unity UGUI 数字使用图片显示-BMFont
Unity UGUI 数字使用图片显示-BMFontBMFont之前使用Cocos引擎的时候需要用到艺术字也就是将数字使用美术给的图片来代替显示,也就是要做一个新字体专门用来显示艺术字,当时用的是BMFont来制作字体。那么问题来了,在Unity下面的UGUI能否使用呢?答案当然是OK的啦。下面我们来看下如何使用BMFont。从网站https://www.angelcode.com/pro...
2019-10-15 18:17:40 3138 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 516
QString.unitypackage
2019-09-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人