Unity
Emmmwzh
已经成为一只码农
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
UnityShader 实现2D游戏迷雾
先看效果吧。我使用的是屏幕后处理效果,首先先去Photoshop做一张图片如下,用画笔点一个点就可以了,使用它来对摄像机截取的图片进行处理。在摄像机上添加脚本文件using System.Collections;using System.Collections.Generic;using UnityEngine;public class TestSc原创 2018-01-07 01:24:11 · 6677 阅读 · 0 评论 -
介绍一下我大二开发的游戏:地下城冒险
前言:写来参加学校比赛的,当时写了一个月左右就期末考试了,后来就没写过了,单机游戏,也是一个烂尾工程。介绍:这是一款3D的RPG游戏,那时候也是看到龙之谷手游是Unity做的,就想自己能不能来一发。这游戏就5关,就是刷刷怪而且任务系统也不完善,各种参数也没认真调,关键是那时候我还不知道框架这种东西,但是还是稍微留意了一下,比如我所有数据都是从一个类中取出来的,现在应该叫做配置管理器。唯一学到的东西...原创 2018-03-01 20:30:51 · 1112 阅读 · 2 评论 -
Unity MVC模式
网上有各种MVC,我只说我用到的MVC。如图所示,管理器持有数据实体,也就是数据模型了,他可以修改数据实体的数据,比如游戏管理器收到用户的输入,比如点击了Attack按钮,那就修改对应实体的IsAttack = true(Trigger),ViewObject是视图对象,他通过Unity的Update轮询自己对应的数据实体获取数据变化,继续上面例子,发现IsAttack = true;那就呈现对应...原创 2018-03-01 16:50:44 · 524 阅读 · 0 评论 -
贪吃小怪兽介绍之位置同步
类似GAnimation,来一套GTransform,传入的数据全为整数,GTranform也是全整数计算,速度快,没误差,计算攻击范围更爽。在计算旋转角度的时候使用Atan2来计算,Atan2(y,x)可以获得点(x,y)与x轴的夹角,返回的是一个(-pi,pi)的单精度浮点数,转化为整数的角度值然后自己写插值,GTransform一直保留一个整数的当前Y轴的旋转角度,计算出目标角度后再计算De...原创 2018-09-13 17:32:16 · 425 阅读 · 0 评论 -
贪吃小怪兽介绍之动画同步
自己写一个Animation叫GAnimation,用组件的方式添加到Player类中,这不是一个框架,而是一个类似于状态机的东西,我使用的是Animation动画,然后给每个动画定义优先级,比如攻击的优先级小于被攻击,即是说一个人的攻击可以被打断,类似这样的。辅助类有Trigger和GAnimationClip(带动画帧事件)。如何做到同步,如果数据是同步的,那么我只要根据数据来一帧一帧播放,来...原创 2018-09-13 17:32:31 · 373 阅读 · 0 评论 -
贪吃小怪兽介绍之通讯协议
写之前定义了这些,后来又加一点,还没有完成这些协议,而且没有写心跳包,因为完成了帧同步很激动,然后就把不想写心跳包了。。buff也没有实现 所有ID、指令都是int除了客户端上传的帧同步数据,其他都是发什么上去服务器就转发什么给客户端 帧同步协议(FrameKey)上行:FClientKey(会话ID + 操作 + buffID) 是否能释放技能由本地计算数据,发送...原创 2018-09-13 17:33:18 · 391 阅读 · 0 评论 -
贪吃小怪兽介绍之客户端帧同步框架
如图所示VKey是虚拟按键,用户每一帧的输入通过事件发送到PVPGame,FixedUpdate是Unity的不是自己写的,由Unity来驱动PVPGame,每一次驱动包括发送一次数据包和从帧同步管理器获取播放的帧数:1、如果是0,说明没有多余的数据了,就是网络卡了,没收到数据。。Unity的框架还是正常运行,但是我不驱动任何物体运动,看起来跟游戏卡了一样。2、如果是大于0的数,说...原创 2018-09-13 17:33:23 · 594 阅读 · 0 评论 -
Unity 日志管理
以前实习的时候写的日志系统是在Debug的事件中加一个监听,把收到的日志保存到文件,这个很多博客都有写,因为大佬要求有行信息,就是 xxxxx cs.168显示一个Log的行号。然而在ReleaseBuild里面是没有行号的,别想了。。只有Development Build日志才有行号。后来发现行号不是必要的,只要知道哪个函数发出的就好,而且在Debug添加监听有很多局限性,不能修改控制台的Log...原创 2018-03-01 14:20:59 · 2378 阅读 · 1 评论 -
贪吃小怪兽介绍之服务层框架
服务层没有框架。。。每一个管理器都是单例,很独立了,依赖的都是一些工具类,比如ResUtils加载资源的工具,NetUtils获取IP、安全关闭Socket之类的。只要在游戏开始的驱动类中Init一下管理器,就可以一直用。...原创 2018-09-13 17:33:27 · 225 阅读 · 0 评论 -
贪吃小怪兽介绍之功能模块框架
如图所示,这个东西主要是从一个山寨贪吃蛇大作战的项目中学来的,SendMessage的签名是SendMessage(string target,string msg,param object[] args),target是模块名,msg是对应的方法名,args是对应的参数,通过反射发送到指定模块,如果模块不存在就缓存起来,等创建后再把事件和消息发给模块。举个实际的例子,Module1是LoginM...原创 2018-09-13 17:33:32 · 467 阅读 · 0 评论 -
贪吃小怪兽介绍之UI框架
如图所示:调用UIManager的Open、Close、GoBackAfterClose.....等接口可以按照类型或者名字打开面板,注意继承UIBase的脚本名和资源名一定是一样的,这样才可以按照类型加载面板,UIPage继承于UIBase,之前考虑到这种情况,如果打开一个面板,上面又打开很多个窗口(比如进入现在的qq飞车,上来一堆窗口),这时候用户按下手机的返回键那应该返回到那个页面呢,是返回...原创 2018-09-13 17:33:37 · 488 阅读 · 0 评论 -
贪吃小怪兽介绍之整体框架
整体框架如下所示,分为三层,上层只能依赖下层。UI层:处理每个面板的UI,比如登录界面就有UILoginPage来管理,(继承于UIBase,UIBase继承于MonoBehavior)功能模块:这一层和Unity完全隔开,对应UI面板有对应的模块提供相应的功能,比如UILoginPage就有LoginModule,用他来处理登录注册信息,UI层直接调用功能模块的功能,功能模块主要是通过事...原创 2018-09-13 17:33:42 · 415 阅读 · 0 评论 -
介绍一下我开发了差不多一个月的小游戏,贪吃小怪兽~
前言:其实还有很多没开发完,因为要准备实习,所以就先搁这儿了。而且只是个原型,很多东西都没调整,通讯协议也没完善,所以很脆弱的。介绍:做这个游戏是因为寒假开始的时候我玩了一款叫贪吃小怪兽的游戏,因为暑假实习后到寒假几个月都没有做项目了,于是决定山寨一波。这个游戏是局域网的多人在线互撕游戏,我山寨的就很菜了。。服务端是TCP,因为UDP在处理比较麻烦而且在公司有人实现,所以我就简单用TCP实现一下帧...原创 2018-03-01 12:28:18 · 1086 阅读 · 0 评论 -
(解决方案在最下面啊)Assertion failed: Cancelling DisplayDialog because it was run from a thread tha..
Unity2017.3.0f3输出日志:Assertion failed: Cancelling DisplayDialog because it was run from a thread that is not the main thread: Opening file failed Opening file D:/Game/EatGit/archive:/CAB-565b8f99473e03...原创 2018-02-12 19:43:05 · 4471 阅读 · 5 评论 -
TargetParameterCountException: parameters do not match signature
在使用C#的反射的时候出现的这行东西,我是这样写的。MethodInfo mi = this.GetType() .GetMethod(msg, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);if (mi != null){ mi.Invoke(thi原创 2018-02-06 12:36:54 · 3118 阅读 · 1 评论 -
unity中的单例模式
单例模式最重要的是不要被new来使用,在C++中可以把构造函数设置为私有或者虚继承等方法来防止被new来使用,在C#中也可以通过下面代码来实现。如果被new了,那么_instance一定是null的,在使用单例的之前,我们可以先用Init()来初始化,其他情况也可以先用CheckSingleton来检查是否被正确调用。注意这不是一个线程安全的单例。 public abstract cla原创 2018-02-05 15:14:26 · 504 阅读 · 0 评论 -
Unity性能优化
一、资源优化1、贴图贴图优化是大头,因为一个游戏内存最多的基本都是贴图了,所以贴图优化很重要。(1)是用PackingTag打包贴图,因为一张贴图大小如果不是2的n次幂,unity会补全,这时候有很多地方是空的,利用这个工具可以把多个小的贴图挤进那些空白的地方。为了节省内存,已经不只是补全空白位置,把多张贴图打包成一张大的贴图,也可以大大减少小贴图浪费的那些空白内存。同时对内存也有...原创 2018-09-13 17:32:38 · 753 阅读 · 2 评论
分享