9 PassionY

尚未进行身份认证

我要认证

不积跬步无以至千里,不及小河无以致江海。

等级
TA的排名 2k+

Unity 如何实现自定义编辑器工具

Unity自定义Inspector界面在开发游戏的过程中,经常碰到需要开发编辑器的功能,Unity商店里面不乏一些非常出色的编辑器工具。当然还有一种开发编辑器工具的工具,比如:Odin,这个工具让开发编辑器变得异常简单,但是里面有大量的Attribute重写,我担心影响Unity编辑器的性能,没敢轻易使用,而且一般的编辑器工具,直接动手就写了,根本也不需要什么插件。今天我把他的源码简单看了一下,实现了它的一个功能,扩展Inspector,期间查阅各种资料,又把Unity自定义编辑器的API给过了一遍,这

2020-08-11 18:29:06

Unity 如何实现基于UI的画线组件

UGUI画线组件Unity自带有一个LineRender,在3D中使用还挺方便,但是如果要在UI上使用,来回转换坐标系,非常的麻烦。本篇文章就是集成Image组件,然后重写了OnPopulateMesh函数,实现了自定义UI划线组件。代码:using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class LineDrawer : Image{ public List<Vect

2020-08-05 10:57:23

Unity 如何实现AssetBundle加密

前言随着Unity的普及,越来越多的公司使用Unity来开发手游,Unity的手游市场占有率越来越高。有很多小白和小公司就使用AssetStudio来破解别人的资源来使用。AssetBundle的资源加密,对于我们来说越来越重要。方案1过去,通过官方文档的了解,我们主要可以通过,AssetBundle.LoadFromMemory(Async)的方案来实现资源包加密,官方文档对这个方法是这样描述的:Use this method to create an AssetBundle from an

2020-08-03 18:39:14

Unity 如何实现动态启动页

前言大家都见过天美的游戏启动页,Tim…,一个自定义的序列帧动画,非常漂亮且流畅,但是显然,Unity本身不具备这个功能。虽然unity2017之后,添加了fade和dolly效果的启动页,但还是无法真正的自定义动态启动页,更别提加入自定义的gif或者帧动画了。那么如何添加真正的序列帧动画呢,那就要使用原生脚本来写启动页了,所以我们需要横跨IOS+Android+Unity,三个不同的领域来实现这一功能。针对这个功能本身,其实对于ios和android原生的开发一点都不难,但是要把这个功能融入unity

2020-07-24 20:32:33

Unity 如何实现苹果动态模糊遮罩

前言使用过苹果手机的都知道,苹果手机在上banner滑下来的时候,会有一个动态模糊的透明背景,其实就是一个毛玻璃效果,用户可以看到毛玻璃下面的应用或者列表,依然时活动的状态,这就是我说的苹果的动态模糊效果。见下图1.实现原理先说原理,要实现一个动态模糊的遮罩,主要有两个技术难点。1.模糊效果:模糊的效果肯定是使用shader,有一种模糊大家应该都听说过,那就是’'高斯模糊",高斯模糊的算法是一个最长常用的模糊图像算法,因为高斯模糊的效果非常的好。2.动态遮罩:动态遮罩,什么意思呢?就是说,我们有一

2020-07-24 19:28:30

Unity 如何实现一个通用的新手引导框架

前言在游戏开发中,新手教程是必不可缺的一项功能,一个方便增删改查的教程框架是非常重要的,可以为项目提高很高的效率。一般不同的游戏项目,新手引导也不太一样,比如,在一些复杂的3D游戏中,有关人物的技能,杀怪,副本等等的流程引导,常常会习惯创建一个Base基类,然后针对不同类型的引导,继承一些子引导类,然后配合一些关卡配置表,来实现不同的引导。而一些简单的2D游戏,比如棋牌,卡牌,休闲等游戏,因为大量的引导都是基于UI或者2D平面的,所以使用一套通用的引导代码,加上配置表,可以完成90%的新手引导。我今天

2020-07-16 22:35:58

Unity 如何实现一个强大的MMO技能系统!

1. 如何实现一个强大的MMO技能系统——序章前言技能系统可以说是游戏中广泛存在而又最重要的系统了,它是整个游戏战斗体验的核心。一套强大的技能系统可以让游戏的策略性,可玩性得到极大的提升。然而技能系统牵涉到的模块非常多,又会面对策划各种各样的奇葩需求,同时技能模块中很多系统的设计不仅仅对程序员的编码能力提出了一定的要求,而且还需要程序员对游戏机制有着深入的理解。可以说要实现一套强力的高可用高扩展的技能系统还是有一定复杂度的。如果作为一个游戏玩家,谈论到技能系统,我们一定会对War3的技能编辑器印象深刻

2020-07-09 11:06:16

用一个用户场景来掌握它们

翻译自一篇博文,原文:One user scenario to rule them all异步系列剖析C#中的异步方法扩展C#中的异步方法C#中异步方法的性能特点。用一个用户场景来掌握它们c#中异步方法的几乎所有重要行为都可以基于一个用户场景进行解释:尽可能简单地将现有的同步代码迁移到异步。你应该能在方法的返回类型前面加上async关键字,在方法名最后加上Async后缀,在方法内部加上一些await关键字,就能得到一个功能完整的异步方法。这个“简单”场景以许多不同的方式极大地影响异步方

2020-07-04 18:29:38

C#中异步方法的性能特点

翻译自一篇博文,原文:The performance characteristics of async methods in C#异步系列剖析C#中的异步方法扩展C#中的异步方法C#中异步方法的性能特点用一个用户场景来掌握它们在前两篇中,我们介绍了C#中异步方法的内部原理,以及C#编译器提供的可扩展性从而自定义异步方法的行为。今天我们将探讨异步方法的性能特点。正如第一篇所述,编译器进行了大量的转换,使异步编程体验非常类似于同步编程。但要做到这一点,编译器会创建一个状态机实例,将其传递给异

2020-07-04 17:36:38

扩展C#中的异步方法

翻译自一篇博文,原文:Extending the async methods in C#异步系列剖析C#中的异步方法扩展C#中的异步方法C#中异步方法的性能特点。用一个用户场景来掌握它们在上一篇中我们讨论了C#编译器是如何转换异步方法的。在这一篇,我们将重点讨论C#编译器为自定义异步方法的行为提供的可扩展性。关于如何控制异步方法机制有3种方法:在System.Runtime.CompilerServices命名空间中提供你自己的async method builder。使用自定义的ta

2020-07-04 17:27:16

剖析C#中的异步方法

翻译自一篇博文,原文:Dissecting the async methods in C#异步系列剖析C#中的异步方法扩展C#中的异步方法C#中异步方法的性能特点。用一个用户场景来掌握它们C#这门语言对开发者的生产效率有很大帮助,我很高兴最近的推动让它变得对高性能应用更加合适。举例来说:C# 5引入了“async”方法(async表示异步,也是关键字)。这个特性从用户的角度看是很实用的,因为它能将几个基于Task的操作合并为一个。但是这种抽象是需要代价的。Task是引用类型,每次实例化的时候

2020-07-04 17:17:53

Unity 2018中使用Async-Await替代 coroutines

在Unity中使用协程通常是解决某些问题的好方法,但是它也具有某些缺点:协程不能返回值。这鼓励程序员创建巨大的整体协程方法,而不是用许多较小的方法组成它们。存在一些变通办法,例如将Action <>类型的回调参数传递给协程,或在协程完成后强制转换从协程产生的最终未类型化值,但是这些方法使用起来很麻烦并且容易出错。协程使错误处理变得困难。您不能将yield放入try-catch中,因此无法处理异常。另外,当确实发生异常时,堆栈跟踪只会告诉您协程在何处抛出了异常,因此您必须猜测可能从哪个协程中调

2020-07-01 18:48:54

EasyTouch手势识别

EasyTouch 单指或多指手势动作识别在场景目录列表中 添加EasyTouch物体EasyTouch 单指或多指手势动作识别Enable EasyTouchEasyTouch触屏功能开启或关闭Enable Unity Remote远程unity ? 开启多指触屏模式 (最终打包时,关闭此选项)GUI兼容EasyTouch 单指或多指手势动作识别Enable Uniyt UI detection开启或关闭Unity UI元素触屏识别Unity UI compatibilityEna

2020-06-28 10:26:16

ILRuntime官方Demo笔记

调用/执行 热更中的方法#调用热更代码中方法,写在AppDomain中,记录一下主要几个方法:AppDomain.LoadAssembly 加载热更dll执行热更代码的方法,有两种方式:appdomain.Invoke(“HotFix_Project.InstanceClass”, “StaticFunTest”, null, null);预先获得IMethod,可以减低每次调用查找方法耗用的时间,代码如下://预先获得IMethod,可以减低每次调用查找方法耗用的时间ITyp

2020-06-28 10:09:53

XLua 与 ILRuntime 性能测试

现在很多项目都使用xlua来开发整个项目,但是实际上使用的并不是xlua标榜的“热修复”,毕竟国内游戏还是要要求可以热更新新功能的,因此如果采用热修复的方案,则需要小版本使用lua写功能,大版本又要把lua版本转换为C#代码重写一次,不太现实,因此现实中的许多公司都是使用lua来写大部分的逻辑。但是u3d是个C#语言为编程语言的引擎(当然还有JS…),一般lua项目中,我们会把逻辑运算量大,复杂度高,对性能有要求的代码写在C#代码,或者C++ DLL库中,比如加载,更新,框架,战斗等, 这就需要程序要经常

2020-06-28 10:02:34

ILRuntime入门笔记

基础知识#官方地址:https://github.com/Ourpalm/ILRuntime官方文档:https://ourpalm.github.io/ILRuntime/官方Unity3D热更例子工程:https://github.com/Ourpalm/ILRuntimeU3D/本文中的名词解释:域 : 应用程序的上下文,可以理解为使用热更之后,在游戏中存在两个域,一个是游戏主程序,另一个是热更域。CLR: Unity脚本(C#)的公共运行库,公共运行环境Assembly-CSharp.

2020-06-28 10:00:59

ET框架和GF框架对比

Unity 框架 GF 和 ET 哪个更好用,各自的优点,缺点是什么?随着Unity的不断发展,现在出现了很多比较牛逼的 开源 框架,其中,我觉得 最厉害的是 Game Framework 和 Egametang 这2个框架都带着ECS的思想,有都用过的朋友,说说,这2个框架 相比较 各自的优点和缺点ET:https://github.com/egametang/ETGameFramework:https://github.com/EllanJiang/UnityGameFrameworkGF框架

2020-06-28 09:59:55

ET框架-数值组件的设计

类似魔兽世界,moba这种技能极其复杂,灵活性要求极高的技能系统,必须需要一套及其灵活的数值结构来搭配。数值结构设计好了,实现技能系统就会非常简单,否则就是一场灾难。比如魔兽世界,一个人物的数值属性非常之多,移动速度,力量,怒气,能量,集中值,魔法值,血量,最大血量,物理攻击,物理防御,法术攻击,法术防御,等等多达几十种之多。属性跟属性之间又相互影响,buff又会给属性增加绝对值,增加百分比,或者某种buff又会在算完所有的增加值之后再来给你翻个倍。普通的做法:一般就是写个数值类:class Nume

2020-06-28 09:58:34

ET框架-组件模式

在代码复用和组织数据方面,面向对象可能是大家第一反应。面向对象三大特性继承,封装,多态,在一定程度上能解决不少代码复用,数据复用的问题。不过面向对象不是万能的,它也有极大的缺陷:数据组织耦合性及强。一旦父类中增加或删除某个字段,可能要影响到所有子类,影响到所有子类相关的逻辑。这显得非常不灵活,在一套复杂的继承体系中,往父类中改变字段会变得越来越麻烦,比方说ABC是D的子类,某天发现需要增加一个AB都有的数据,但是C没有,那么这个数据肯定不好放到父类中,只能将AB抽象出来一个父类E,E继承于D,AB共

2020-06-28 09:57:11

ET框架-ECS

一切皆组件目前十分流行ECS设计,主要是守望先锋的成功,引爆了这种技术。守望先锋采用了状态帧这种网络技术,客户端会进行预测,预测不准需要进行回滚,由于组件式的设计,回滚可以只回滚某些组件即可。ECS最重要的设计是逻辑跟数据的完全分离。即EC是纯数据,System实际上就是逻辑,由数据驱动逻辑。数据驱动逻辑是什么意思呢?很简单通过Update检测数据变化,通过事件机制来订阅数据变化,这就是所谓的数据驱动了。其它的特点例如缓存命中,在编写逻辑上来说并不太重要,现代游戏都用脚本,连脚本的性能都能容忍怎么会在乎缓

2020-06-28 09:47:08

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 原力探索 · S
    原力探索 · S
    在《原力计划【第二季】》打卡挑战活动中,发布 12 篇原创文章参与活动的博主,即可获得此勋章。(本次活动结束后统一统计发放)
  • 分享宗师
    分享宗师
    成功上传21个资源即可获取