Unity学习
文章平均质量分 60
q568360447
这个作者很懒,什么都没留下…
展开
-
Unity打开Package目录下cs代码显示杂项文件的解决办法
Unity2018以后,很多功能都是以package的形式添加到项目里的。但是我们经常需要查看package中的代码,来查看unity内部的实现。但是当我们直接打开使用VS来打开这些文件的时候,往往它们都是杂项文件。这样对我们查看这些代码的结构会很不方便。首先,我们要明确几个目录和文件:1.与Assetes目录在同一目录下的Package目录下的manifest.json文件,这个是项目引...原创 2020-02-10 19:41:45 · 3115 阅读 · 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 · 2222 阅读 · 0 评论 -
玩转Unity中的ML-Agents 机器学习(三):BallacceBall 案例训练
转载注明出处,QQ群:142617170 , 欢迎进群交流!运行Unity 的ML-Agents所需要的环境都搭好之后,就可以实际探索工程内的官方案例。这一篇我们以官方工程内的3D BallanceBall 案例来说明整个机器学习的流程以及在这个过程中博主所遇到的一些问题。随着新的ML-Agents v0.3的发布,我更改了教程中的一下过时的内容。源英文文档的教程地址:https://github...原创 2017-10-11 18:48:20 · 5346 阅读 · 4 评论 -
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 · 25018 阅读 · 1 评论 -
Unity 全局雾效Shader:基于摄像机距离的雾效渲染
写在前面的话: 这个雾效大部分代码源自 冯乐乐的书籍:Unity shader 入门精要。 在书中的示例代码中,主要基于了屏幕高度,而对屏幕进行雾效的渲染。我将其中的部分shader代码修改后,实现了基于摄像机距离的雾效渲染。先解释雾效shader代码的原理: 雾效的实现是基于屏幕后处理,即在摄像机上挂一个脚本,这个脚本中执行OnRenderImage函数,对摄像机所渲原创 2017-12-14 16:59:47 · 4806 阅读 · 1 评论 -
Unity游戏开发优化事项
此篇博客内容均根据Unity官方文档内容翻译并总结而来。官方文档的目录为:UnityManual ---->Bset Practice Guide ----> Understanding Optimization in Unity ----> General Optimization 和 Special Optimization用户可以自行对文档中的这部分内容进行查阅,这里对这几部分内容原创 2017-12-16 16:38:55 · 621 阅读 · 0 评论 -
Unity游戏换装
原理: 将一个模型拆分成多个skinmesh renderer,然后写一个脚本将它们分别赋值。最终通过零散的skinmesh最终组合成一个全新的mesh,最终达到实现一个新的模型,达到换装的目的。参考代码如下:using UnityEngine;using System.Collections;using System.Collections.Generic;[RequireC原创 2018-02-06 22:20:06 · 830 阅读 · 0 评论 -
加载prefab来替换加载烘焙后的场景
平时在项目开发过程中,要加载游戏对象时,经常使用加载一个prefab来代替加载整个场景。做法是:把场景里的所有对象都放置到一个根GameObject上,然后将这个GameObject保存成为一个Prefab。然后再在代码中加载这个prefab来达到生成切换场景的作用。 但是,如果如果场景中的物体是经过烘焙了的,那保存的prefab会丢失LightingMap信息。此时,我们把场景中的...原创 2018-03-15 11:49:38 · 2480 阅读 · 0 评论 -
深入浅出Timeline之Timline的编辑器扩展
自unity2017发布以来,Unity的内置Timeline功能被应用到游戏开发中的各个领域环节,对于制作过场动画,连续的游戏剧情表现或者某些演示动画都有非常重要的作用。 一般Timeline里面,除了最常用的Animation Track , Activation Track , Audio Track等外,还有官方自带插件中的Cinemation Track,这...原创 2018-05-17 20:58:37 · 4390 阅读 · 1 评论 -
四元数的学习笔记
在平时的开发中,经常会遇到旋转的操作,也因此经常会接触到四元数的相关概念。但是,这个概念说难不难,但是理解起来也挺费劲的。 我经常会使用到四元数,但是每次使用时都会查资料,当时理解了概念,但是过两天又忘记了,当再次使用的时候,又要重新查资料。挺蛋疼。于是就写一篇博客,关于四元数,算是加强印象。 先放一篇对四元数讲解的非常详细的博客: ...原创 2018-05-25 22:03:18 · 915 阅读 · 0 评论 -
Unity2017 优化总结
Unity2017游戏优化总结前言 “过早的优化是万恶之源”。在问题成为真正的性能瓶颈之前,不要为了优化而优化。首先定位到了真正的性能问题,再从相应的问题出发,去解决性能问题。 在Unity中,我们可以通过引擎提供的工具Profile 和 Frame Debugger,来定位到大部分的性能问题。 以下所总结的优化点,可以在大家碰到...原创 2018-08-30 15:20:50 · 3352 阅读 · 0 评论 -
Unity 可编程渲染管线 LWRP 的详细步骤
这篇文章的主要内容是讲Unity的内置可编程渲染管线LWRP的渲染流程。即这一帧内从开始到结束所经过的渲染步骤。 由于版本时效性,我写博文时所用的Unity版本和LWRP的package版本分别是: Unity版本:2018.3.0f2 LWRP的版本为:4.10.0.preview 先上LWRP里面关于核...原创 2019-03-04 20:48:11 · 7149 阅读 · 0 评论 -
官方AnimationInstancing功能使用小结
AnimationInstancing插件是官方推出用来处理GPU渲染骨骼动画的一个插件。具体不表。由于项目需要,目前需要有同屏将近200个单位同时上场战斗,每个单位都使用了骨骼动画。由于传统的SkinnedMeshrenderer组件是不能合批的。如果使用传统的方式,势必会有draw call过高的影响。因此经过评估后,使用官方推出的AnimationInstancing插件。在使用的过...原创 2019-07-02 21:42:01 · 2883 阅读 · 1 评论 -
玩转Unity资源,对象和序列化(下)
本文将从Unity编辑器和运行时两个角度出发,主要探讨以下两方面内容:Unity序列化系统内部细节以及Unity如何维护不同对象之间的强引用。另外还会讨论对象与资源的技术实现差别。译注:除非特别说明,下文中所有的“资源”均指代“Asset”。本文内容是理解在Unity中如何高效加载和卸载资源的基础。正确的资源管理对缩短加载时间并减少内存占用来说至关重要。之前已经介绍了 上半部分,今转载 2017-09-29 15:38:05 · 442 阅读 · 0 评论 -
玩转Unity资源,对象和序列化(上)
本文将从Unity编辑器和运行时两个角度出发,主要探讨以下两方面内容:Unity序列化系统内部细节以及Unity如何维护不同对象之间的强引用。另外还会讨论对象与资源的技术实现差别。译注:除非特别说明,下文中所有的“资源”均指代“Asset”。本文内容是理解在Unity中如何高效加载和卸载资源的基础。正确的资源管理对缩短加载时间并减少内存占用来说至关重要。今天先为大家分享上半部分内容转载 2017-09-29 15:37:06 · 692 阅读 · 0 评论 -
新知识点:EventHandler学习
EventHandler 是事件定义的的一种,它拥有两个参数,一个是Object 类型的sender , 另 一个是继承自EvebtArgs的参数e,一般它的写法如下:using UnityEngine;using System.Collections;using System;/// <summary>/// 定义事件的类。/// 其中NewCarInfo代表事件名,它的作用是注册它所触发原创 2017-03-22 23:39:40 · 1583 阅读 · 0 评论 -
简易的AudioManager实现
功能描述: 1.此AudioManager做成1个单例,在使用单例的时候会先判断场景中有没生成对应的GameObject,若没有,则生成一个。 2.建立2个AudioSource,一个用于播放游戏背景音乐,一个用于播放游戏音效 3.AuidioManager中制作如下几个功能:播放背景音乐,播放游戏音效,设置背景音乐音量,设置音效音量,音乐暂停,音乐继续 代码原创 2017-03-24 18:10:00 · 487 阅读 · 0 评论 -
简易的SaveManager实现
简述:这里我们使用c#中的序列化来实现数据的存储和读取。 功能简述:保存时,我们将我们要保存的数据序列化后,新建一个文件保存起来。 读取时,我将我们要读取的数据反序列化,然后读取出来,代码如下:using UnityEngine;using System.Collections;using System.Collections.Generic;using S原创 2017-03-15 23:40:07 · 1392 阅读 · 0 评论 -
Unity切换场景淡入淡出效果
在制作游戏时,我们在切换场景时经常需要增加一个淡入淡出的效果。这里,我们利用Unity自带的动画系统制作一个场景的淡入淡出的效果。步骤如下:1.在游戏中新建一个游戏对象,给游戏添加一个GUITexture组件,并设置好相关的参数后,制作成prefab。如下图:![这里写图片描述](http://img.blog.csdn.net/20170503163347320?watermark/2/text原创 2017-05-03 16:54:47 · 9923 阅读 · 0 评论 -
Unity自定义Inspectors
在Unity中,有时候需要自定义脚本在inspector中的显示,具体操作如下: 1.首先我们要在Editor文件夹下建立一个脚本,范例如下:using UnityEngine;using UnityEditor;using System.Collections;[CustomEditor (typeof (MyPlayer))] [CanEditMultipleObjects]原创 2017-04-22 16:55:54 · 687 阅读 · 0 评论 -
堆和栈的功能简述
我们在进行语言学习时,经常碰到内存的问题,这篇博文是简要的阐述内存中堆和栈的相关知识。通过今天的学习,我们知道,运行时,内存一般分为若干部分,但是最重要的两部分是堆和栈。首先说堆。在代码执行的过程中,堆中主要存放引用类型的对象。简单的来说,任何需要new出来的对象,都是存放在堆内存中。再次说栈。所有局部变量都存放在栈中。简单的来说,就是在任何一个方法中定义的变量,都存放在栈中。那么还剩下一个特殊类原创 2017-04-25 00:22:12 · 1234 阅读 · 0 评论 -
【转】Unity 协程
作者ChevyRay ,2013年9月28日,snaker7译 原文地址:http://unitypatterns.com/introduction-to-coroutines/ 在Unity中,协程(Coroutines)的形式是我最喜欢的功能之一,几乎在所有的项目中,我都会使用它来控制运动,序列,以及对象的行为。在这个教程中,我将会说明协程是如何工作的,并且会附上一些例子来介绍它的用法。协程转载 2017-05-16 17:22:53 · 761 阅读 · 0 评论 -
Unity2D 官方骨骼动画Anima2D使用方法
转载请注明出处。原创 2017-05-20 12:44:11 · 39697 阅读 · 8 评论 -
实现简易的PoolManager
简述:实现一个简易的PoolManager为游戏中生成对象节省内存。PoolManager做成一个单例。功能简述:游戏中需要生成某些对象时,会先从pool中查看有没有这个对象。如果有的话就,就直接设置池子里这个对象的状态;若没有,则将该对象的状态设置成false。下面就是一个最最最基本的PoolManager的功能实现,可拓展性很差,但是可以作为一个原型来参考。using UnityEngine原创 2017-03-14 22:55:05 · 702 阅读 · 0 评论 -
Unity2017 Timeline使用初探
转载请注明出处。 有任何问题可以留言或者在我的微博中留言。 新浪微博: @圣毛毛Timeline功能 是 Unity2017 版本中非常重要的一个功能,它的功能也十分强大,我们在这里只是初步的介绍我们在游戏开发中Timeline的基本使用方法。需求Unity版本: Unity2017 版本 另外:timeline功能需要对unity编辑器的基础功能有一定的熟悉才方便理解与掌握。1.Tim原创 2017-07-15 15:52:09 · 16854 阅读 · 3 评论 -
Unity接入安卓SDK方法
接入SDK的本质上,就是我们需要在Unity中开发游戏时,用到别人提供的功能,比如说:QQ登录,微信分享,支付,广告等功能。因此,我们需要在Unity中调用别人开发的功能,来嵌入到自己的游戏中。这里,我们接入SDK的方法使用Unity的Plugin方式。其本质类似于我们将安卓的库导入到unity中,然后在Unity中利用C#访问这个库里面的类,进而在游戏中在合适的时刻调用该类的方法。这里我们用一种通原创 2017-08-10 21:34:09 · 2098 阅读 · 1 评论 -
Unity开发游戏优化相关
这篇文章的内容就是从群里的朋友截图那里看到的。顺便保存在博客里原创 2017-07-27 13:07:18 · 384 阅读 · 0 评论 -
GameObject.instantiate 生成继承自其他的gameobject的问题
假如我们目前有A和B两个gameobject,其中B继承自A。此时,如果我们在游戏中用GameObject.Instantiate方法来克隆一个B时,程序会执行A中的Awake方法。这是一个unity 的底层的实现问题,没法改变。因此得紧记。原创 2017-04-07 13:35:28 · 1142 阅读 · 0 评论