自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

顽皮细雨的博客

U3D游戏开发的学习和项目笔记

  • 博客(53)
  • 收藏
  • 关注

原创 Unity美术字体教程--BMFont美术字体的制作流程以及在unity中美术字体的生成

在unity的开发过程中,为了实现更好的表现,经常要使用美术字体,记录下美术字体的制作流程。首先,美术的同学会给一张制作好的美术字的图片,当然如果能直接给fnt文件就更省事了。拿到图片后,将图片的spriteMode设置为Multiple,然后Sprite Editor进行图片区域的划分,把图片分成宽度高度一致的小图,分享一个在unity中使用的图片切割的工具脚本:/*** UnityVersion: 2018.3.10f1* FileName: ImageSlicer

2020-11-27 21:58:19 2347 1

原创 Unity UGUI 按钮呈半圆型滑动的无限列表 可左右镜像排列

上一篇是实现了按钮可拖拽并自动吸附在屏幕两侧,接着呈半圆分布。之前是道具按钮比较少的情况,道具按钮一多,屏幕空间又局促的情况下,按钮就要适当隐藏了,所以做成一个可以滑动的列表。滑动的轨迹是一个圆形。这个需求还挺有意思的,记录一下代码: using DG.Tweening;using System.Collections;using UnityEngine;using UnityEngine.UI;usi...

2020-08-19 21:57:26 2718 2

原创 Unity UGUI 按钮自动吸附在屏幕边缘,并成半圆分布

在有些屏幕空间比较局促的游戏中,可能会采用可活动的按钮,根据点击的位置灵活摆放按钮,为了不遮挡其他物体和UI,自动吸附在屏幕边缘。我们的游戏还提了一个多按钮呈半圆分布的需求。具体的代码如下:using DG.Tweening;using System.Collections;using UnityEngine;using UnityEngine.UI;using UnityEngine.EventSystems;using UnityEngine.SceneManagement;name

2020-07-15 01:54:50 1463

原创 Untiy UGUI ToggleGroup 多按钮互斥 只选中一个按钮并监听按钮点击方法

使用方法:1.新建一个panel,挂上ToggleGroup组件和Tab组件2.新建Toggle,看需要多少按钮就新建几个,Toggle里面的Chectmark换成想要点击选中之后的效果3.获取Tab组件,在开始方法中注册监听事件,RankTab.AddSelectedListener(SelectRankType)4.在监听事件中能根据toggleName识别点击的是哪个Toggleprivate void SelectRankType(string toggleName,int i

2020-06-23 01:45:59 4112 3

原创 Unity UI弹窗的背景虚化效果

UI弹框的虚化效果是一个比较常见的需求了,一般我们在处理弹框UI的时候,会留一个半透明的背景用来遮挡弹框底下的图层或者是场景,所以要让背景虚化可以使用这个图片。在这个图片上添加材质和写shader脚本实现模糊效果。原理就是就是每一个像素都取周边像素的平均值。 Shader "MyShader/BackBlur" { Properties { [PerRendererData] _MainTex ("Sprite Textur...

2020-06-17 02:56:03 4685

原创 Unity类似桌球的物体反弹实现

在游戏开发中经常会碰到物体碰撞之后的反弹需求。一般情况的需求是入射角度和出射的角度是一致的,也是就在被反弹的物体和反射的物体之间作一个法线。类似打桌球,球碰到桌台的效果。由于我们是休闲小游戏的项目对性能要求不是很严格,所以直接用了unity的碰撞器检测碰撞。给反弹的物体和添加Collider被反弹的物体添加Collider和Rigidbody,由于我们项目的不会使用刚体去控制移动,所以把position和rotation都Freeze掉。如果对性能要求较高,不推荐使用刚体,可以自己写算法实现...

2020-06-14 23:48:07 2562

原创 Unity角色实时阴影方案

角色实时阴影是游戏开发中比较常见的需求了,但是阴影的实现原理比较难懂,网上有很多关于阴影原理的解释和案例,可以研究一下,这里给出两种在unity中阴影的具体实现。1.使用Untiy自带的实时阴影unity自带的实时阴影锯齿比较严重,而且性能不高,一般只给主角使用,由于锯齿严重,可以把影子的质量调高,锯齿感就少了。有时使用unity引擎自带的阴影在game场景看不到,或者与scene场景看到的表现不一致,注意调整这几个地方。1.光照的Inspector面板:阴影类型选择soft sh...

2020-06-14 15:03:16 4811

原创 Unity 游戏数据的存档读档,数据加密与解密

untiy中单机游戏的读档与存档有4方式,一种是unity自带的数据持久化方案PlayerPrefs 采用键值对的方式, 可以存储Int,Float,String类型的数据。一般复杂和大量的数据通过序列化(Serialize)来保存数据常见的3种:二进制,XML方法,Json方法二进制方法:简单,但可读性差 XML方法:可读性强,但是文件庞大,冗余信息多JSON方法:数据格式比较简单,易于读写,但是不直观,可读性比XML差这里介绍JSON(LitJson)方法:using ..

2020-06-09 03:48:11 6935

原创 GameFramework使用教程

今年开始接触这个框架,最开始技术选型的时候是准备使用这个框架进行弱联网小游戏的开发,做一些休闲小游戏的开发。由于一些原因项目在demo阶段告一段落,算起来使用这个框架一共是4个月左右的时间。不知道下一个项目还会不会采用这个框架,利用缓冲时间来整理一下技术以及自己在项目中的收获。 一.框架介绍:Game Framework 是一个基于 Unity 引擎的游戏框架,主要对游戏开发过程中常用模块进行了封装,很大程度地规范开发过程、加快开发速度并保证产品质量。GameFrame...

2020-05-28 00:54:13 6632 1

原创 Unity3D物体在UI界面的显示

3D物体在UI界面的显示是个比较常遇到的需求,实现这个需求,首先要做的是创建一个专门拍摄模型的摄像机,和创建RenderTexture赋值给相机。这里具体的操作可以参照:https://www.cnblogs.com/chinarbolg/p/9601376.html上面有相应的图文说明。最后在模型的展示按钮上添加如下脚本:using System.Collections;using System.Collections.Generic;using UnityEngine;...

2020-05-27 02:14:45 4003

原创 Unity 项目知识积累

项目知识积累UGUI自动布局Auto LayOut图片自适应文字Content Size Fitter加 Horizontal Layout Group刘海屏手机怎么处理UI1.所有UI界面统一右移动处理2.自行对刘海的尺寸固定一个保守估计值来规避UI上的遮挡3.监听手机翻转事件及时调整设置Mask组件Mask组件会产生一个DrawCall,在Mask中的图片无法与外界的图片进行合批模态对话框是指这个对话框弹出的时候,鼠标不能单击这个对话框之外的区域,.

2020-05-26 01:36:15 899 1

原创 Unity在Text中添加下划线(通过添加顶点来渲染)

最近在准备做富文本控件,方便后期在游戏项目中使用,自己负责做一下在Text文本添加下划线功能。在NGUI的富文本中是有添加下划线功能的,但是在unity自带的UGUI的富文本控件中没有提供这个功能,需要自己手动拓展。看了下网上的博客教程大多数的解决方案是在Text下面添加Text或者通过拉伸Image的方式来解决,这种两个方式在解决普通需求时问题不到,但是在性能要求比较苛刻的手游环境来说,如果重复...

2019-05-26 23:54:37 7099 6

原创 Unity实现动态资源加载的4种方式

前几天老大要做一下unity资源的加载熟悉下unity资源加载的API,自己的代码还是有点烂啊,在老大的教导下,现在能将就看看了。使用unity开发游戏的过程中,资源的加载一直都是需要重点关注的。unity一共提供了5种资源加载的方式,分别是Resources(只能加载Resources目录中的资源),AssetBundle(只能加载AB资源,当前设备允许访问的路径都可以),WWW(可以加载...

2019-05-06 21:26:31 32844 5

原创 Unity中Protobuf的使用

前几天,公司前辈要我去学习一下protobuf在unity中的使用,因为序列化的问题在网上找了很多教程终于将问题解决,特此记录一下代码和使用情况。 首先找到protobuf-net,Google.Protobuf两个拓展文件导入到unity中通过using ProtoBuf就可以正常使用了,使用有两个方法。 第一种是使用protoc.exe工具将.pr...

2019-03-06 19:51:05 1707

原创 Unity开发校招面试总结

最近温度降的比较厉害,今天出了大太阳,沐浴着阳光的悠闲午后,想到大四上兵荒马乱的半年,觉得应该用一篇博客来记录下实习和校招面试的感触,也对自己这半年所学的的技术做一个总结。 18年7月,结束了大三工作室的课程,跟上学期一样进行了项目答辩,这个项目是工作室5个小伙伴(3个程序一个UI一个建模)做的,程序人有点多,所以主要的架构服务器代码都是室友写的多,自己就写了几个工具类。不过...

2019-01-27 01:03:55 3573 2

原创 AsyncLoadScene场景的异步加载---Loading界面

     在游戏开发过程中,常常需要Loading界面。一方面是为了等待后台加载场景;一方面也是为了美观,可以在Loading界面放上游戏里有趣的截图,战斗场面,小提示等。自己最近做的毕业设计中使用了场景的异步加载来使游戏变得更加完整和有趣,这些api用的比较少,所以代码贴上来记录一下。/* * 所属层级:工具层 * 脚本功能:异步加载场景 * * */using Uni...

2018-11-22 20:04:30 4162

原创 关于大学,关于游戏和游戏开发

      从没想过时间会过的这么快,甚至都已经不记得在这个学校过了多少个赖床叫室友帮忙点到的早晨,过了多少低头玩手机假上课的上午,过了多少阳光正好悠闲无所事事的下午,过了多少为游戏拼杀的夜,为赶作业为未来发愁的通宵。最近听说室友实习工作转正了,听说一个玩的很好的朋友签了大企工作了。在这个节点会有各种信息涌来,准备好的没准备好的各种好的或者坏的消息,好像根本不给你感慨青春易逝的时间,又要随着人潮去...

2018-11-18 18:56:51 2051 5

原创 数据结构(C#版)笔记(三)

25.字符串在 C#中,创建串不能用 new 操作符,而是使用一种称为字符串驻留的机制。这是因为 C#语言将 String 看作是基元类型。基元类型是被编译器直接支持的类型,可以在源代码中用文本常量(Literal)来直接表达字符串。当 C#编译器对源代码进行编译时,将文本常量字符串存放在托管模块的元数据中。而当 CLR 初始化时, CLR 创建一个空的散列表,其中的键是字符串,值为指向...

2018-10-22 22:20:19 152

原创 数据结构(C#版)笔记(二)

16.双向链表在结点中设两个引用域,一个保存直接前驱结点的地址,叫 prev,一个直接后继结点的地址,叫 next,这样的链表就是双向链表(Doubly Linked List)。插入操作:➀ p.Next.Prev = s;➁ s.Prev = p;➂ s.Next = p.Next;➃ p.Next = s;删除操作:➀ p.Next = P.Next.Next;➁ ...

2018-09-17 11:44:53 221

原创 数据结构(C#版)笔记(一)

1.数据结构逻辑结构(Data Structure)数据结构是相互之间存在一种或多种特定关系的数据元素的集合。在任何问题中,数据元素之间都不是孤立的,而是存在着一定的关系,这种关系称为结构(Structure)。根据数据元素之间关系的不同特性,通常有 4 类基本数据结构:(1) 集合(Set):该结构中的数据元素除了存在“同属于一个集合”的关系外,不存在任何其它关系。(2) 线性结构(...

2018-09-11 19:19:28 299

原创 C#高级编程学习笔记(三)

61.异步编程async 和await 关键字在后台运行,通常在线程或任务的帮助下,并不会阻塞调用线程。3种模式:异步模式,基于事件的异步模式,基于任务的异步模式。62.进程与线程程序在启动时,系统会在内存中创建一个进程。进程是程序运行所需资源的集合,这些资源包括虚地址空间、文件句柄和其他程序运行所需的东西。在进程的内部,系统创建一个称为线程的内核对象,代表真正执行的程序。当线程被建立...

2018-08-30 18:17:33 326

原创 C#高级编程学习笔记(二)

31.比较值类型的相等性 ReferenceEquals()用于比较引用,Equals()用于比较值。比较运算符可以看作一个中间项,但最大的区别是值类型需要装箱才能把它转化为引用。32.比较运算符重载语句if(a==b)对于类,这个语句在默认状态下会比较引用a和b,检测这两个引用是否指向内存中的同一个地址,而不是检测两个实例实际上是否包含相同的数据。C#要求成对的重载运算符,比较运算符必...

2018-08-09 17:01:49 895

原创 C#高级编程学习笔记(一)

在公司前辈的指导下,决定再次去巩固C#语法,经过挑选,选择了《C#高级编程》这本书。这本书在对原理性的东西讲解的时候比较透彻,讲的也很深入,对于很多上学时期比较模糊的概念都给出了解答。所以做了很多笔记,贴在这里方便以后进行查阅。1.引用类型和值类型的区别?在C#中值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中。值类型(value type):byte,s...

2018-08-06 23:11:57 1707

原创 lapis--web服务器框架

-app.lualocal lapis = require("lapis")local app=lapis.Application()app:enable("etlua")--数据库操作---[[local db=require ("lapis.db")app:match("/", function() local res = db.query("select * from ...

2018-07-27 18:50:00 887 1

转载 html--简单登录注册页面

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> function check(){ v

2018-07-26 10:14:24 8164 1

原创 游戏性能优化--ResourcesManager对象缓冲

/* 资源加载管理器 对象缓冲技术 * 功能:可以做一个资源容器,方便动态加载资源,在unity中Resources。load<>是非常 * 消耗性能的。通过这个脚本插件可以很好的优化脚本性能。 * */using System.Collections;using System.Collections.Generic;using...

2018-06-16 16:58:22 449

原创 游戏性能优化--ObjectPool资源池的创建和使用

/* Object Pool 资源池 * 在游戏开发中,子弹等的反复创建和销毁是非常消耗性能的,所以可以引入资源池技术 * 当想要创建子弹时先看池子里有没有子弹,先从池子里拿,在用完之后又自动的还到池子里 * 用资源池可以很好的节约游戏性能。 * */using System.Collections;using System...

2018-06-11 10:00:02 807

原创 unity编辑器的简单扩展

恐怖的6月考试复习月要来了,好久没更博客了,希望这个月结束有一份好的实习,cheer up!using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;public class Tools { //MenuItem后面引号内是扩展的目录名,1表示优先级不...

2018-06-04 18:26:29 315

原创 学习游戏开发--细节笔记(持续更新)

1.Animation.CrossFafe();这个方法播放动画会更流畅。2.遇到人物行走过程模型升高的问题可以模拟一个重力让Y一直-。3.tranform.lookat()方法可以用transform.rotation=Quaternion.slerp(transform.rotation,Quaternion.lookrotation())4.伤害机制一般采用SendMessage()的来传递...

2018-05-21 11:10:55 494

原创 游戏设计模式--访问者模式

/* 游戏设计模式--访问者模式 * 定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。 * 涉及角色: * 1.Visitor 抽象访问者角色,为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识了发送访 * 问请求...

2018-05-19 17:24:02 486

原创 游戏设计模式--备忘录模式

/* 游戏设计模式--备忘录模式 * 备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Token模式,是GoF的23种设计模式之一,属于行为模式。 * 定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 * 涉及角色: * 1...

2018-05-16 10:00:31 409

原创 OneAlive--游戏音效管理器

/* 游戏音效管理器 * 功能:管理游戏中音效的播放和声音的调节 * audioSourceBG是背景(2D)音乐,挂在相机上即可 * gamesound是游戏音效(3D)挂在人物角色身上 */using System.Collections;using System.Collections.Generic;using UnityEngine;public cl...

2018-05-15 09:40:34 1029

原创 游戏设计模式--责任链模式

/* 游戏设计模式--责任链模式 * 定义:很多对象由每一个对象对其下家的引用而连接起来形成一条链。 * 请求在这个链上传递,直到链上的某一个对象决定处理此请求。 * 发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求, * 这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 * ...

2018-05-14 17:14:14 314

原创 游戏设计模式--命令模式

/* 游戏设计模式--命令模式 * 命令模式:将一个请求封装为一个对象(即我们创建的Command对象),从而使你可用不同的请求对客户进行参数化; * 对请求排队或记录请求日志,以及支持可撤销的操作。 * Command:定义命令的接口,声明执行的方法。 * ConcreteCommand:命令接...

2018-05-08 18:11:41 434

原创 OneAlive--数据库的搭建测试

using UnityEngine;using System;using System.Collections;using System.Data;using MySql.Data.MySqlClient;using UnityEngine.UI;public class DBdata : MonoBehaviour{ //建立连接的语句 //如果是本地数据...

2018-05-08 10:14:29 222

原创 游戏设计模式--组合模式

/* 组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户 * 对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清 * 楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义。组合模式可 * 以让客户端像修改配置文件一样简单的完成本来需要流程控制语句来完成的功能。 * 经典案例:系统目...

2018-05-03 17:30:03 746

原创 游戏设计模式--建造者模式

/* 游戏设计模式--建造者模式 * 将一个复杂对象的构建与它的表示分离,似的同样的构建过程可以创建不同的表示的意图时,我们就需要应用建造者模式。 * 定义一个抽象的建造者类 * 建造具体建造者类,让具体的建造者类去继承抽象类,那就必须去重写抽象方法 * 建造指挥者类,用它来控制建造过程,也用它来隔离用户与建造过程的关联 * * 实例:在游...

2018-04-23 17:00:44 513

原创 游戏设计模式--工厂模式

/* 游戏开发设计模式--简单工厂模式 * 建立一个工厂(一个函数或一个类方法)来制造新的对象。 * 实例:生产手机,比如小米和苹果各有生产手机的方法,客户不要知道具体的生产 * 手机的方法,直接交给工厂来做,这样可以降低耦合。 * 简单工厂模式在更改需求的时候会违背开闭原则 * * */using System;using System.C...

2018-04-18 11:29:30 359

原创 游戏设计模式--状态模式

/* 设计模式学习--状态模式 * 优点:在面向对象软件设计时,常常碰到某一个对象由于状态的不同而有不同的行为。 * 如果用if else或是switch case等方法处理,对象操作及对象的状态就耦合在一起, * 碰到复杂的情况就会造成代码结构的混乱。在这种情况下,就可以使用状态模式来解决问题。 * 定义:状态模式允许一个对象在其内...

2018-04-17 18:24:35 757

原创 游戏设计模式--模板方法模式

/* 学习设计模式--模板模式 * * 冲泡咖啡和冲泡茶的例子 * 加工流程: * 咖啡冲泡法:1.把水煮沸、2.用沸水冲泡咖啡、3.把咖啡倒进杯子、4.加糖和牛奶 * 茶冲泡法: 1.把水煮沸、2.用沸水冲泡茶叶、3.把 茶 倒进杯子、4.加蜂蜜 * * * */using System.Collections;using System.Collections.Ge...

2018-04-16 10:36:54 310

空空如也

空空如也

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

TA关注的人

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