游戏开发
画个小圆儿
胸怀文墨虚若谷,腹有诗书气自华
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Unity3D 配置Git忽略文件
1.前言配置根据unity工程.gitignore文件进行分析,本文转载在windows下可以创建文件名为.gitignore.,保存之后系统会自动重命名为 .gitignore2.文件示例以下为一个忽略文件示例内容/[Ll]ibrary//[Tt]emp//[Oo]bj//[Bb]uild//[Bb]uilds//[Pp]rojectSettings/ProjectVersion.txt/Assets/AssetStoreTools*# Autogenerated VS转载 2021-01-13 19:36:17 · 2127 阅读 · 0 评论 -
Unity中读取.CSV文件
很多时候我们需要使用策划的Excel表来做游戏的静态数据配置, 而不是采用自己定义的xml或者U3D的scriptobject。1、创建csv文件自己写一个excel表格,然后另存为csv文件,文件名是test.csv。2、改成txt格式既然unity3d不认识csv,那么我们人工处理一下,很简单,像上一篇文章一样,简单粗暴的把csv的扩展名改成txt吧,谁让unity3d比较亲txt呢,更改后是test.txt,打开后是这个样子的:3、读取txt文件using Sy.原创 2022-04-07 16:58:02 · 5064 阅读 · 1 评论 -
unity Assetbundle资源管理与更新比对下载
在做项目时为了减少包体的大小,我们可以用unity自带的AssetBundle进行资源打包管理,本篇博客采用的方案是在资源打包时给每个资源一个特定的MD5值,写入文本进行保存资源名称和对应的MD5值,并把资源和存储的文本放入服务器中;然后本地运行项目时首先判断本地是否有已下载好的资源和文本,然后把本地的文本与服务器的文本进行比对,如果资源的MD5值不对应那么就下载此资源到本地进行替换同时更新相应的资源名和对应的MD5值;如果本地没有此资源也要重新下载资源到本地并把资源名和对应的MD5值下载到本地进行保存。转载 2020-07-06 18:43:52 · 2056 阅读 · 0 评论 -
Unity TCPSocket粘包和拆包问题
问题产生一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和封包问题。下面可以看一张图,是客户端向服务端发送包:1. 第一种情况,Data1和Data2都分开发送到了Server端,没有产生粘包和拆包的情况。2. 第二种情况,Data1和Data2数据粘在了一起,打成了一个大的包发送到Server端,这个情况就是粘包。3. 第三种情况,Data2被分离成Data2_1和Data2_2,并且Data2_1在Data1之前到达转载 2020-06-02 00:53:15 · 3452 阅读 · 2 评论 -
Unity中EventManager的实现方式
在进行Unity相关开发过程中我们总是需要响应很多的事件,如果没有一个集中的管理,代码就会变得很混乱,这时候EventManager就变的很重要了。这里根据Unity的官方教程:Events: Creating a simple messaging system,通过调用Unity的时间系统来进行封装。(留下备用)这里是Unity官方教程的实现方式,这里改成了单例模式。using System.Collections;using System.Collections.Generic;usi原创 2020-06-23 18:29:17 · 1985 阅读 · 1 评论 -
Unity 在2D中实现LookAt
由于Transform.LookAt是使Z轴看向目标,而2D基本是由X和Y轴构成的。所以在2D的游戏中,不太好使用。所以用代码实现一个2D的LookAt函数。例子:我们使怪物的眼睛一直看着云。怪物的眼睛朝向和localX轴的朝向一致,所以使怪物看着云,即将localx指向云。给怪物挂上脚本脚本编写写法一:void Update () { Vector2 direction = target.transform.position - transfor.转载 2020-06-11 10:30:48 · 1288 阅读 · 0 评论 -
Unity中使用WebSocket
WebSocket是什么?WebSocket协议是为了实现网络客户端和服务器端全双工通信而引入的一种基于消息帧和TCP的通信机制,这个协议本身的目标是为了在http服务器上引入双向通信的机制,从而克服http单向通信的缺陷(http设计的初衷就不是为了双向通信),其可以在复用http的端口,支持http的代理,认证等,虽然如此,websocket可以独立于http存在。 详细的内容可以参考RF...原创 2020-04-16 09:41:37 · 6788 阅读 · 1 评论 -
Unity 设置外部程序无边框和显示隐藏
这个是调用win10自带屏幕键盘的代码首先要找的win10自带屏幕键盘的exe文件,保存到unity streamingAssets文件夹下启动unity 要用管理员模式启动,不然打不开自带的屏幕键盘,对于其他的程序可能不需要用管理员启动unity上代码:using System;using System.Collections;using System.Collection...转载 2020-03-12 12:43:12 · 2006 阅读 · 0 评论 -
Unity踩坑日记——PC打包后窗口控制抽风
最近又开始做unity项目了~具体内容暂且不表,在最后打包的时候遇到了一个很神奇的事情,同样的配置下,打包出来的一系列10几个项目打开时有的按照配置的分辨率展示,有的默认全屏,有的以窗口模式拉伸来全屏(当然是在客户的电脑上)···然后就直接十脸懵逼了···再三检查配置,甚至都在GameManager里面直接通过Screen.SetResolution(1280, 960, false);来强制限制...转载 2020-03-06 12:32:56 · 577 阅读 · 0 评论 -
Dotween常用方法详解
Dotween是unity里非常常用的插件,但是很多人应该没有仔细的阅读过它的api,它实际有很多好用的方法,下面我就针对一些相对常用的方法,做下总结:一、Unity常用组件拓展方法(1) Transform拓展方法1)Position 1)改变世界坐标 移动方法,第一个参数是要移动到的目标点,不是移动这个向量的距离 transform....转载 2020-01-10 14:37:55 · 4244 阅读 · 0 评论 -
unity应用开机自启
写在前面经过一晚上的研究和分析,发现设置开机自启动主要有两种主流方式和一种非主流方式,这几个方式基本能满足需求,分别是: 开始菜单启动(最常用,不需要管理员权限) 注册表启动项(需要管理员权限) Windows计划任务(需要管理员权限,unity中使用有异常) 以下代码都是即拿即用,只需绑定Button和Text即可。开始菜单启动开始菜单启动大概是我们最常...转载 2019-11-08 21:47:31 · 1355 阅读 · 0 评论 -
Unity中网格合并
从优化角度,Mesh需要合并。从换装的角度(这里指的是换形状、换组成部件的换装,而不是挂点型的换装),都需要网格合并、材质合并。如果是人物的换装,那么需要合并SkinnedMeshRenderer,并重刷对应的骨骼列表。网格合并后对模型的渲染可以降低GPU的负担,但是经过测试发现,虽然网格合并了但是由于子物体网格的材质是不同的并没有降低DrawCall,如果把材质改成相同的,Unity自身会进...原创 2018-11-30 11:18:10 · 3349 阅读 · 0 评论 -
Unity 数据统计SDK TalkingData
官网链接:http://www.talkingdata.com/进入官方给出的demo网页统计API使用文档:http://doc.talkingdata.com/posts/65#%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90-%E9%9B%86%E6%88%90%E6%A3%80%E6%9F%A5%E5%88%97%E8%A1%A8...转载 2019-09-09 11:48:24 · 1356 阅读 · 0 评论 -
Unity中鼠标的锁定与解锁
void Update() { // 当按下 A 键时,鼠标锁定并消失 if (Input.GetKeyDown(KeyCode.A)) { Cursor.lockState = CursorLockMode.Locked; } // 当按下 S 键时,鼠标解锁并显示 ...原创 2019-10-24 19:20:34 · 9043 阅读 · 1 评论 -
Unity中加载本地图片
Unity运行时动态加载本地图片的方法,直接上代码,里面很详细。using System.Collections;using System.Collections.Generic;using System.IO;using UnityEngine;using UnityEngine.UI;public class Test : MonoBehaviour { publi...原创 2019-06-10 13:59:16 · 16511 阅读 · 2 评论 -
Unity自带组件VideoPlayer的一些常用功能
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Video;public class Test : MonoBehaviour{ VideoPlayer videoPlayer; void Start() { ...原创 2020-03-02 11:37:11 · 2671 阅读 · 0 评论 -
Unity中前后台切换
代码:/// <summary> /// 如果应用程序暂停时,则为True,否则为False /// 用在手机端,按Home键时 /// </summary> /// <param name="pause"></param> private void OnApplicationPause(bool pau...原创 2019-03-18 14:02:28 · 5623 阅读 · 0 评论 -
unity中使用SQLite
一、准备在Unity中使用SQLite数据库需要先导入三个dll文件,mono.data.sqlite.dll,System.data.dll,sqlite3.dll,到Assets/Plugins文件夹中。mono.data.sqlite.dll和System.data.dll在Unity\Editor\Data\MonoBleedingEdge\lib\mono\2.0sqlite......原创 2019-03-07 14:42:01 · 13810 阅读 · 7 评论 -
Unity 攻击范围检测并绘制检测区域
一、圆形检测using System.Collections;using System.Collections.Generic;using UnityEngine;/// <summary>/// 圆形检测,并绘制出运行的攻击范围/// </summary>public class CircleDetect : MonoBehaviour { ...原创 2019-02-01 16:23:03 · 18479 阅读 · 2 评论 -
UGUI中播放视频
Unity中支持的视频格式有 .mov , .mpg , .mpeg , .mp4 , .avi , .asf登,但是视频的大小最好别超过100MB,因为Unity3D对视频的导入是比较慢的。首先创建RawImage(或者在其他UI对象上添加RawImage组件),然后在该对象上在添加Video Player组件(播放视频)和Audio Source组件(播放音频,添加就好不需要操作)...原创 2018-12-10 17:41:33 · 1021 阅读 · 0 评论 -
Unity中移动物体的几种常用方法
简介:在unity3d中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position。1. 通过Transform组件移动物体 Transform 组件用于描述物体在空间中的状态,它包括 位置(position), 旋转(rotation)和 缩放(scale)。 其实所有的移动都会导致position的改变,这里所说的通过Transform组件来移动物体,指的是...转载 2018-10-30 16:01:05 · 1069 阅读 · 0 评论 -
Unity中的对象池
什么是对象池?为了方便对象的产生和回收,我们使用一个集合来存储不使用对象,当需要使用该对象时,从集合中取出来,不用时不进行销毁,而是将其取消激活,重新存入对象池中。为什么要使用对象池?当一个游戏需要频繁的创建和销毁对象时,为了不增加GC的性能消耗,可以考虑使用回收对象来达到复用的目的。(适用于频繁创建和销毁的对象)对象池的实现Pool(对象池):对存储对象的集合进行了适当的封装...原创 2018-07-25 17:45:34 · 441 阅读 · 0 评论 -
Unity中的Input输入
鼠标输入Input.mousePosition:鼠标的位置;Input.GetAxis("Mouse X"):鼠标沿着屏幕横向滑动;Input.GetAxis("Mouse Y"):鼠标沿着屏幕纵向滑动;Input.GetMouseButton(X):按住鼠标某键盘(持续动作);Input.GetMouseButtonDown(X):按下鼠标某键(瞬间动作);Input.GetMouseButto...原创 2018-06-25 18:00:00 · 1572 阅读 · 0 评论 -
UGUI中Text的自适应换行问题
方法一: Text里的内容已知并且固定,我们可以在Text文本框里编辑时,通过换行键就可以实现。方法二: 可以通过代码直接给Text组件的text赋值,效果如下:代码:using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public c...原创 2018-06-05 18:03:19 · 26818 阅读 · 0 评论 -
Unity使用UGUI制作图集
制作图集的好处:众所周知CPU是用来处理游戏的逻辑运算的,而GPU是用来处理游戏中图像的。在GPU中,我们要绘制一个图像需要提交图片(纹理)到显存,然后再进行绘制(在这个过程中会产生一次DrawCall),也就是说我们要绘制100张图片就要产生100次DrawCall.显然这是非常消耗性能的。这是制作图集的好处就显而易见了:①、减少性能消耗,提高处理效率②、可以归类不同模块的图片③...原创 2018-04-09 18:54:06 · 17829 阅读 · 3 评论 -
Unity中CanvasGroup组件
介绍:Canvas Group可以影响该组UI元素的部分性质,而不需要费力的对该组UI下的每个元素进行逐一得得调整。Canvas Group是同时作用于该组件UI下的全部元素。参数:Alpha : 该组UI元素的透明度。注:每个UI最终的透明度是由此值和自身的alpha数值相乘得到。Interactable : 是否需要交互(勾选的则是可交互),同时作用于该组全部UI元素。...原创 2019-04-10 18:54:45 · 22907 阅读 · 1 评论 -
UGUI实现卡片椭圆方向滚动
1、搭建场景使用DoTween实现卡片的动画移动。脚本:using DG.Tweening;using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class UIRotate : MonoBehaviour { ...转载 2019-04-11 18:04:26 · 1402 阅读 · 4 评论 -
Unity制作卡牌翻转的效果
1、设计思路 创建一个空物体,空物体下有两个image对象,一个是正面,一个是背面。假设我们从正面开始,则初始状态下正面的旋转角度为(0,0,0) ,让背面的旋转角度为(0,90,0) ,这样背面就看不见了。触发旋转时,例如让正面在0.3秒内旋转到(0,90,0) ,这样正面就看不见了,等旋转完成后再让背面0.3秒旋转到(0,0,0),这样背面出现,整个翻转的过程就完成了,如果不明白,...转载 2019-04-09 11:32:57 · 7851 阅读 · 4 评论 -
Unity播放带有透明通道视频的几点总结
1、videoplayer支持.webm和.mov格式的视频;2、使用.webm格式后,Android平台必须勾选支持转码,否则不支持透明通道;3、unity2018之前的版本,导出android包不能从bundle包加载视频;4、unity2018之后的版本,必须无压缩后导出android包才能从bundle包加载视频;5、使用url模式后,streamingAsset下加载的视频在...转载 2019-08-01 19:01:14 · 3508 阅读 · 0 评论 -
Unity3D程序退出进程及资源问题
Application.Quit() : 正常退出(在打包后使用,不能再编译状态下使用)UnityEditor.EditorApplication.isPlaying = false : 在编译状态游戏退出System.Diagnostics.Process.GetCurrentProcess().Kill() : 关掉与当前活动相关的进程System.Environment.Ex...转载 2019-07-30 19:28:45 · 5225 阅读 · 2 评论 -
Unity刚体约束(RigidbodyConstraints)问题
1 下面这三行代码写法,不要以为同时冻结了X轴移动、Y轴移动以及所有的旋转,其实只会冻结Y轴的位置移动,我下面这种写法,最后的会覆盖前面的----------------------------------------------------------------------------2 下面这种写法是,除Z轴位置移动解冻外,其它的都被冻结------...转载 2019-07-23 18:57:16 · 2356 阅读 · 0 评论 -
Unity查看日志
在Editor中查看时:如果只想看警告和错误(取消白色的选中):注:可以Window —> Console调出日志输出日志输出面板,也可以使用快捷键ctrl + shift +c。在本地文件中存放路径为:C:\Users\win 10\AppData\Local\Unity\Editor。此处的win 10是电脑用户名。当Unity打包exe文件后,log文件的...原创 2019-07-10 20:16:38 · 9439 阅读 · 1 评论 -
Unity中Invoke和InvokeRepeating的使用
Invoke:Invoke()是Unity中内置的一个回调机制。void Invoke(string methodName,float time) : 意思是在等待time之后,再调用方法methodName方法。实例:延时2秒后执行Running方法。注:1)、Invoke() : 不能接受有参数的方法。2)、Invoke():应该在脚本的生命周期里面(Start...原创 2019-06-19 19:25:35 · 29305 阅读 · 2 评论 -
Unity 协程的原理
协程不是多线程,协程还是在主线程里面(注:在Unity中非主线程是不可以访问Unity资源的)1、线程、进程和协程的区别进程有自己独立的堆和栈,即不共享堆也不共享栈,进程由操作系统调度线程拥有自己独立的栈和共享的堆,共享堆不共享栈,线程亦有操作系统调度(标准线程是这样的)协程和线程一样共享堆不共享栈,协程由程序员在协程的代码里面显示调度一个应用程序一般对应一个进程,一个进程一般...原创 2019-06-13 18:45:50 · 11467 阅读 · 2 评论 -
UGUI简单实现炉石效果
主要达到效果:1、箭头的指向,身体的长短2、箭头的身体是不断向前流动的3、箭头的头部以及尾部接近透明,并且在接入目标时会出现聚焦环场景搭建:创建脚本Arrow挂载在Canvas上,创建ArrowBody挂载在body上。脚本:Arrow:using System.Collections;using System.Collections.Generic;us...原创 2019-05-14 18:41:44 · 4536 阅读 · 7 评论 -
NGUI实现打印机效果
使用NGUI实现打印机的效果需要使用到TypewriterEffect组件,将其与UILabel文本框结合使用即实现。首先先创建一个Label(在此之前肯定要创建UIRoot了,NGUI—> Create —>2DUI,再在Camera上创建Panel),NGUI—> Open —>Widet Wizard。就是这样的层次:下面再看一下Label上需要的...原创 2019-04-26 17:53:19 · 411 阅读 · 0 评论 -
NGUI制作图集
众所周知NGUI有个很大的特点就是必须先打出图集来才可以制作界面。下面我们就来看一下NGUI是怎样制作图集的。首先选中需要打包图集的图片(可以不改变图片的格式,UGUI打包图集需要将图片修改为Sprite格式)然后依次点击菜单栏中NGUI —>Open —>Atlas Maker会出现下图的界面,点击Create,选择你的图集存放的位置,并起名字。然后我们看...原创 2019-08-28 18:37:53 · 2455 阅读 · 0 评论 -
在Unity中实现GPS定位
关于GPS的定位服务,原生的iOS和Android都可以实现,但是Unity和ios、android的交互略微麻烦。因此Unity官方给我们提供好了关于GPS的服务,就在我们熟悉的Input当中。他就是Input.Location;相关的API,有两个:LocationService 和 LocationInfo 。LocationService 负责启动和关闭定位服务。LocationInfo ...转载 2018-03-26 17:03:22 · 5381 阅读 · 0 评论
分享