自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (1)
  • 收藏
  • 关注

原创 Unity打开Package目录下cs代码显示杂项文件的解决办法

Unity2018以后,很多功能都是以package的形式添加到项目里的。但是我们经常需要查看package中的代码,来查看unity内部的实现。但是当我们直接打开使用VS来打开这些文件的时候,往往它们都是杂项文件。这样对我们查看这些代码的结构会很不方便。首先,我们要明确几个目录和文件:1.与Assetes目录在同一目录下的Package目录下的manifest.json文件,这个是项目引...

2020-02-10 19:41:45 2964 2

原创 Unity Compute Shader的一个简单完整的示例

代码示例简介 这个例子是 新建一个数组,这个数组里的值在GPU中进行一次计算,并把结果保存回CPU,最终输出出来。代码如下:c#脚本:using System.Collections;using System.Collections.Generic;using UnityEngine;public class ComputeScript : MonoBehavio...

2020-01-08 14:17:05 2129

转载 转 针对移动端TBDR架构GPU特性的渲染优化

TBDR(Tile-Base-Deffered-Rendering)是现代移动端gpu的设计架构,它同传统pc上IR(Immediate-Rendering)架构的gpu在硬件设计上是差别很大的。手游正是运行在这些移动端的TBDR架构上,所以手游的渲染优化在硬件的角度上讲有其独特之处,甚至一些特点和优化点与PC是大相径庭的,基于硬件的优化是应用程序优化很重要的一部分,最近阅读了一些tbdr的硬件设...

2019-11-23 14:06:29 386

原创 项目性能优化记录随笔

内存初始打出包后,发现闪退极其严重 。在手机上实测发现是内存问题。1.开始查美术资源。发现因为项目要快速出效果,美术制作场景时使用了各种尺寸超大的贴图,且并未压缩,导致内存轻松超过警戒线。2.代码框架。因为之前资源AB包卸载的时机是监控当前手机内存红线,而这个红线是一个配置值。其他时候加载过的AB都不会被卸载。导致内存越来越大。后来在切换场景时,手动调用内存释放的方法,强制卸载所有不被引用的...

2019-08-15 11:32:52 182

原创 官方AnimationInstancing功能使用小结

AnimationInstancing插件是官方推出用来处理GPU渲染骨骼动画的一个插件。具体不表。由于项目需要,目前需要有同屏将近200个单位同时上场战斗,每个单位都使用了骨骼动画。由于传统的SkinnedMeshrenderer组件是不能合批的。如果使用传统的方式,势必会有draw call过高的影响。因此经过评估后,使用官方推出的AnimationInstancing插件。在使用的过...

2019-07-02 21:42:01 2812 1

原创 Unity 可编程渲染管线 LWRP 的详细步骤

这篇文章的主要内容是讲Unity的内置可编程渲染管线LWRP的渲染流程。即这一帧内从开始到结束所经过的渲染步骤。 由于版本时效性,我写博文时所用的Unity版本和LWRP的package版本分别是: Unity版本:2018.3.0f2 LWRP的版本为:4.10.0.preview 先上LWRP里面关于核...

2019-03-04 20:48:11 7085

原创 一些编码经验总结随笔

这篇博文的内容是关于在平时实现需求时,如何写出易于理解和阅读的代码的一些总结。这篇总结是基于最近读了《代码整洁之道》这本书而有感而发。讲道理,我自己平时在写代码的时候也是图快,求快,面对频繁变化的需求,有时候也会只求完成需求,而让代码越来越一团糟,导致后面几乎很难维护。希望写这篇博客能够督促自己以后在写代码时按照这些原则来进行。 1.关于命名 1.1 命名一定...

2019-02-15 15:16:16 383

原创 Unity2017 优化总结

Unity2017游戏优化总结前言         “过早的优化是万恶之源”。在问题成为真正的性能瓶颈之前,不要为了优化而优化。首先定位到了真正的性能问题,再从相应的问题出发,去解决性能问题。         在Unity中,我们可以通过引擎提供的工具Profile 和 Frame Debugger,来定位到大部分的性能问题。         以下所总结的优化点,可以在大家碰到...

2018-08-30 15:20:50 3314

原创 四元数的学习笔记

        在平时的开发中,经常会遇到旋转的操作,也因此经常会接触到四元数的相关概念。但是,这个概念说难不难,但是理解起来也挺费劲的。        我经常会使用到四元数,但是每次使用时都会查资料,当时理解了概念,但是过两天又忘记了,当再次使用的时候,又要重新查资料。挺蛋疼。于是就写一篇博客,关于四元数,算是加强印象。        先放一篇对四元数讲解的非常详细的博客:           ...

2018-05-25 22:03:18 884

原创 深入浅出Timeline之Timline的编辑器扩展

        自unity2017发布以来,Unity的内置Timeline功能被应用到游戏开发中的各个领域环节,对于制作过场动画,连续的游戏剧情表现或者某些演示动画都有非常重要的作用。        一般Timeline里面,除了最常用的Animation Track , Activation Track , Audio Track等外,还有官方自带插件中的Cinemation Track,这...

2018-05-17 20:58:37 4252 1

原创 加载prefab来替换加载烘焙后的场景

    平时在项目开发过程中,要加载游戏对象时,经常使用加载一个prefab来代替加载整个场景。做法是:把场景里的所有对象都放置到一个根GameObject上,然后将这个GameObject保存成为一个Prefab。然后再在代码中加载这个prefab来达到生成切换场景的作用。    但是,如果如果场景中的物体是经过烘焙了的,那保存的prefab会丢失LightingMap信息。此时,我们把场景中的...

2018-03-15 11:49:38 2378

原创 Unity游戏换装

原理: 将一个模型拆分成多个skinmesh renderer,然后写一个脚本将它们分别赋值。最终通过零散的skinmesh最终组合成一个全新的mesh,最终达到实现一个新的模型,达到换装的目的。参考代码如下:using UnityEngine;using System.Collections;using System.Collections.Generic;[RequireC

2018-02-06 22:20:06 785

原创 Unity游戏开发优化事项

此篇博客内容均根据Unity官方文档内容翻译并总结而来。官方文档的目录为:UnityManual ---->Bset Practice Guide ----> Understanding Optimization in Unity ----> General Optimization  和 Special Optimization用户可以自行对文档中的这部分内容进行查阅,这里对这几部分内容

2017-12-16 16:38:55 567

原创 Unity 全局雾效Shader:基于摄像机距离的雾效渲染

写在前面的话: 这个雾效大部分代码源自 冯乐乐的书籍:Unity shader 入门精要。 在书中的示例代码中,主要基于了屏幕高度,而对屏幕进行雾效的渲染。我将其中的部分shader代码修改后,实现了基于摄像机距离的雾效渲染。先解释雾效shader代码的原理: 雾效的实现是基于屏幕后处理,即在摄像机上挂一个脚本,这个脚本中执行OnRenderImage函数,对摄像机所渲

2017-12-14 16:59:47 4641 1

原创 Unity中SetPassCall, Batches的区别,它们与Draw call 的关系

先放官方对于Draw call batch的解释:https://docs.unity3d.com/Manual/DrawCallBatching.html  在Unity 的优化中,我们经常说要优化Draw call。但是我们在Unity 的视图里的 stats窗口里,看到的与draw call 有关的参数大部分情况下只有SetPassCall 和 Batches两个。那这两个值

2017-11-29 21:46:48 24481 1

原创 玩转Unity中的ML-Agents 机器学习(三):BallacceBall 案例训练

转载注明出处,QQ群:142617170 , 欢迎进群交流!运行Unity 的ML-Agents所需要的环境都搭好之后,就可以实际探索工程内的官方案例。这一篇我们以官方工程内的3D BallanceBall 案例来说明整个机器学习的流程以及在这个过程中博主所遇到的一些问题。随着新的ML-Agents v0.3的发布,我更改了教程中的一下过时的内容。源英文文档的教程地址:https://github...

2017-10-11 18:48:20 5297 4

原创 玩转Unity中的ML-Agents 机器学习(二):Unity环境搭建

转载注明出处Unity 机器学习交流群:142617170    欢迎大家入群交流随着ML-Agent v0.3 版本的更新,对博文中的许多内容做出修改这篇博文是根据Unity ML-Agents 的官方github中的readme里总结而来,英文好的同学可以直接移步github,具体网址如下:https://github.com/Unity-Technologies/ml-agents/blob...

2017-10-10 20:26:30 3931

原创 玩转Unity中的ML-Agents 机器学习(一):系统环境安装

2018年4月17日更新--------------------------------------------------------目前github官方主页上ml-agents已有中文翻译,传送门是:    https://github.com/Unity-Technologies/ml-agents/tree/master/docs/localized/zh-CN2018年3月30日更新--...

2017-10-09 11:28:42 8589 1

转载 玩转Unity资源,对象和序列化(下)

本文将从Unity编辑器和运行时两个角度出发,主要探讨以下两方面内容:Unity序列化系统内部细节以及Unity如何维护不同对象之间的强引用。另外还会讨论对象与资源的技术实现差别。译注:除非特别说明,下文中所有的“资源”均指代“Asset”。本文内容是理解在Unity中如何高效加载和卸载资源的基础。正确的资源管理对缩短加载时间并减少内存占用来说至关重要。之前已经介绍了 上半部分,今

2017-09-29 15:38:05 414

转载 玩转Unity资源,对象和序列化(上)

本文将从Unity编辑器和运行时两个角度出发,主要探讨以下两方面内容:Unity序列化系统内部细节以及Unity如何维护不同对象之间的强引用。另外还会讨论对象与资源的技术实现差别。译注:除非特别说明,下文中所有的“资源”均指代“Asset”。本文内容是理解在Unity中如何高效加载和卸载资源的基础。正确的资源管理对缩短加载时间并减少内存占用来说至关重要。今天先为大家分享上半部分内容

2017-09-29 15:37:06 673

原创 Unity接入安卓SDK方法

接入SDK的本质上,就是我们需要在Unity中开发游戏时,用到别人提供的功能,比如说:QQ登录,微信分享,支付,广告等功能。因此,我们需要在Unity中调用别人开发的功能,来嵌入到自己的游戏中。这里,我们接入SDK的方法使用Unity的Plugin方式。其本质类似于我们将安卓的库导入到unity中,然后在Unity中利用C#访问这个库里面的类,进而在游戏中在合适的时刻调用该类的方法。这里我们用一种通

2017-08-10 21:34:09 2052 1

原创 Unity开发游戏优化相关

这篇文章的内容就是从群里的朋友截图那里看到的。顺便保存在博客里

2017-07-27 13:07:18 362

原创 Unity2017 Timeline使用初探

转载请注明出处。 有任何问题可以留言或者在我的微博中留言。 新浪微博: @圣毛毛Timeline功能 是 Unity2017 版本中非常重要的一个功能,它的功能也十分强大,我们在这里只是初步的介绍我们在游戏开发中Timeline的基本使用方法。需求Unity版本: Unity2017 版本 另外:timeline功能需要对unity编辑器的基础功能有一定的熟悉才方便理解与掌握。1.Tim

2017-07-15 15:52:09 16790 3

原创 c#中利用结构体进行socket传输数据

using System.Collections;using System.Collections.Generic;using System;using System.IO;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.

2017-06-27 15:05:38 1578

原创 深入浅出计算机系统运行原理

计算机的作用对现在所有人来说都是非常重要了,我们的平时生活片刻都离不开它,但是我们谈到计算机原理的时候,又总是一头雾水,想了解时碰到那么多专业名词又两眼一抹黑,不知道计算机运行的原理到底是啥。今天我们就用非常贴近生活的例子来类比计算机的运行原理,帮助我们更好的了解它。    也许我们大多数人不知道计算机到底是怎么运行的,但是我们一定知道,当我们在买电脑的时候,会有各种电脑配置让我们选择

2017-06-15 21:59:54 34214 6

原创 Unity2D 官方骨骼动画Anima2D使用方法

转载请注明出处。

2017-05-20 12:44:11 39337 8

转载 【转】Unity 协程

作者ChevyRay ,2013年9月28日,snaker7译 原文地址:http://unitypatterns.com/introduction-to-coroutines/ 在Unity中,协程(Coroutines)的形式是我最喜欢的功能之一,几乎在所有的项目中,我都会使用它来控制运动,序列,以及对象的行为。在这个教程中,我将会说明协程是如何工作的,并且会附上一些例子来介绍它的用法。协程

2017-05-16 17:22:53 727

原创 Unity切换场景淡入淡出效果

在制作游戏时,我们在切换场景时经常需要增加一个淡入淡出的效果。这里,我们利用Unity自带的动画系统制作一个场景的淡入淡出的效果。步骤如下:1.在游戏中新建一个游戏对象,给游戏添加一个GUITexture组件,并设置好相关的参数后,制作成prefab。如下图:![这里写图片描述](http://img.blog.csdn.net/20170503163347320?watermark/2/text

2017-05-03 16:54:47 9830

原创 堆和栈的功能简述

我们在进行语言学习时,经常碰到内存的问题,这篇博文是简要的阐述内存中堆和栈的相关知识。通过今天的学习,我们知道,运行时,内存一般分为若干部分,但是最重要的两部分是堆和栈。首先说堆。在代码执行的过程中,堆中主要存放引用类型的对象。简单的来说,任何需要new出来的对象,都是存放在堆内存中。再次说栈。所有局部变量都存放在栈中。简单的来说,就是在任何一个方法中定义的变量,都存放在栈中。那么还剩下一个特殊类

2017-04-25 00:22:12 1186

原创 Unity自定义Inspectors

在Unity中,有时候需要自定义脚本在inspector中的显示,具体操作如下: 1.首先我们要在Editor文件夹下建立一个脚本,范例如下:using UnityEngine;using UnityEditor;using System.Collections;[CustomEditor (typeof (MyPlayer))] [CanEditMultipleObjects]

2017-04-22 16:55:54 641

原创 GameObject.instantiate 生成继承自其他的gameobject的问题

假如我们目前有A和B两个gameobject,其中B继承自A。此时,如果我们在游戏中用GameObject.Instantiate方法来克隆一个B时,程序会执行A中的Awake方法。这是一个unity 的底层的实现问题,没法改变。因此得紧记。

2017-04-07 13:35:28 1114

原创 简易的EventManager实现

首先,这篇博文是参考了http://blog.sina.com.cn/s/blog_5b6cb9500102uypp.html 这个文章作者的思路而设计的。经过自己的理解后,模仿了一个消息系统给自己用,下面谈谈对这个系统的认识和看法。我所制作的EventManager的核心是: 1.把我们游戏中所有用到的方法,全部放在一个枚举中,如下:public enum GameEvent{

2017-03-30 15:27:24 1437

原创 Source Tree与Coding.net进行异地开发

Source Tree 是一个git工具,可以用来异步开发以及异地开发。 SourceTree用来作为客户端,Coding.net网站作为服务器。 首先在Coding.net上新建一个项目,然后在本地下载一个SourceTree软件,然后将Coding.net上的项目地址输入到SourceTree中,在本地中建立git仓库。此时就将本地文件与服务器端建立了连接。 建立连接后,就可以随时上传和下

2017-03-28 17:35:31 958

原创 简易的AudioManager实现

功能描述: 1.此AudioManager做成1个单例,在使用单例的时候会先判断场景中有没生成对应的GameObject,若没有,则生成一个。 2.建立2个AudioSource,一个用于播放游戏背景音乐,一个用于播放游戏音效 3.AuidioManager中制作如下几个功能:播放背景音乐,播放游戏音效,设置背景音乐音量,设置音效音量,音乐暂停,音乐继续 代码

2017-03-24 18:10:00 455

原创 c# 监控一个变量数据改变之Get;SET

在平时编程中,我们总是想着监控一个变量的值,当它的值到达一定条件时,我们就执行一些操作。虽然我们在Unity的Update()函数中时刻监控也能达到这样的效果,但是太浪费效率了,因为那样每帧都会执行一次判断和检测,那有没有什么方法可以只在变量改变的时候才检测它的值有没有达到我们所设定的条件呢。答案是有的,这就用到了c#语言的特性:get方法和set方法。在c#中我们知道属性是可以用get和set

2017-03-23 15:58:22 11621

原创 新知识点:EventHandler学习

EventHandler 是事件定义的的一种,它拥有两个参数,一个是Object 类型的sender , 另 一个是继承自EvebtArgs的参数e,一般它的写法如下:using UnityEngine;using System.Collections;using System;/// <summary>/// 定义事件的类。/// 其中NewCarInfo代表事件名,它的作用是注册它所触发

2017-03-22 23:39:40 1520

原创 Roguelike游戏设计(一)

Roguelike类型的游戏是最古老的游戏类型之一,玩家只有一条命,死亡了,游戏就重新开始。比较出名的类似游戏有《魔塔》等。这类游戏的随机性非常强,玩家不知道会发生什么事情,这样也会是游戏的乐趣所在。并且玩家也会随着游戏的进行会有很多选择。但是要设计该类型游戏的数值,必须先定位这类型游戏的玩法以及相关的系统。本文的主要目的在于阐述我们要设计的游戏有哪些玩法。玩法设计:1.玩

2017-03-17 00:15:35 3445

原创 简易的SaveManager实现

简述:这里我们使用c#中的序列化来实现数据的存储和读取。 功能简述:保存时,我们将我们要保存的数据序列化后,新建一个文件保存起来。 读取时,我将我们要读取的数据反序列化,然后读取出来,代码如下:using UnityEngine;using System.Collections;using System.Collections.Generic;using S

2017-03-15 23:40:07 1313

原创 实现简易的PoolManager

简述:实现一个简易的PoolManager为游戏中生成对象节省内存。PoolManager做成一个单例。功能简述:游戏中需要生成某些对象时,会先从pool中查看有没有这个对象。如果有的话就,就直接设置池子里这个对象的状态;若没有,则将该对象的状态设置成false。下面就是一个最最最基本的PoolManager的功能实现,可拓展性很差,但是可以作为一个原型来参考。using UnityEngine

2017-03-14 22:55:05 674

原创 第一篇博文

Hello World!

2017-03-13 21:00:07 228

AndroidMMP游戏攻防

安卓平台的MMO开发圣典,非常适合安卓平台的游戏开发!

2018-08-23

空空如也

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

TA关注的人

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