自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(51)
  • 资源 (4)
  • 收藏
  • 关注

原创 HTML5学习笔记之defer与async的使用

HTML5学习笔记之defer与async的使用

2022-09-16 22:53:31 194 1

原创 Unity简单实例之中使用命令模式进行回放的操作

代码1:定义命令的接口或者使用抽象类也未尝不可。public interface ICommand{ void Execute(); void Undue();} 代码2:实现一个点击的命令using UnityEngine;class ClickCommand : ICommand{ private GameObject _cube; private Color _color; private Color _previousColor;

2020-12-03 19:55:56 574

原创 unity中四元数的简单示例

using UnityEngine;public class Quaternioner : MonoBehaviour{ // Start is called before the first frame update public float speed = 3f; public Transform target; void Start() { } // Update is called once per frame .

2020-11-30 22:39:44 200

原创 unity中隐藏基类的方法与字段

using UnityEngine;public class HideMemeber : MonoBehaviour{ // Start is called before the first frame update void Start() { Debug.Log("-------------------------------"); Humanoid human = new Humanoid(); Humanoid enem.

2020-11-30 21:53:55 668

原创 unity中继承的学习记得断点后运行理解下哈

using UnityEngine;public class Inheritance : MonoBehaviour{ // Start is called before the first frame update void Start() { Debug.Log("Creating the fruit"); Fruit myFruit = new Fruit(); Debug.Log("Creating the apple".

2020-11-30 21:28:43 118

原创 在UNITY中理解类的多态用简单例子来理解,记得断点调试运行下!

using UnityEngine;public class Polymorphism : MonoBehaviour{ // Start is called before the first frame update void Start() { // 请注意,这里的变量“myFruit”的类型是 //Fruit,但是被分配了对 Apple 的引用。这是 //由于多态而起作用的。由于 Apple 是 Fruit, .

2020-11-30 21:26:00 200

原创 Shader学习系列一从shaderforge和shadergraph比较入手

遇到的问题:1.在半兰伯特关照模型使用Append生成二维向量再导入texture中,在亮部形成黑色斑块时什么原因呢?后来发现需要在unity中将贴图修改为lightmap光照贴图即可。2.在半兰伯特中使用append节点的时候,要注意先后顺序。3.ps中创建三色过度的话使用渐变工具,点击左上角渐变里面的图标,在图标上选取每个渐变的值,然后确定是否插件等。4.使用shadergraph重新作出上面的效果要稍微麻烦一些。首先,没有直接取得关照的节点所以只好自己写一个取得主光源的颜色和方向,代码

2020-08-25 20:17:33 3350

原创 unity官方美女讲解的场景加载demo

分为两种方法,一种用碰撞器解决,一种用距离判断。地下城与迷宫等使用碰撞比较好,而外面的开放世界可以使用距离判断using UnityEngine;using UnityEngine.SceneManagement;public class LoadPartOfScene : MonoBehaviour{ public enum CheckLoadPartOfMethod { UseDistance, UseTrigger }

2020-07-05 16:30:01 263

原创 unity中如何反序列化xml进行读取

using System.IO;using System.Xml.Serialization;using UnityEngine;public class SerializeDemo : MonoBehaviour{ void Start() { XmlReadSerlize(); } void XmlReadSerlize() { var testmlserial = XmlDeSe..

2020-07-02 19:49:30 212

原创 unity中如何序列化xml

新建2个脚本脚本2个代码如下:// 脚本1 TestSertialusing System.Collections.Generic;using System.Xml.Serialization;[System.Serializable]public class TestSertial{ [XmlAttribute("ID")] public int ID { get; set; } [XmlAttribute("Name")] public

2020-07-01 23:56:45 312

原创 Unity中如何替换资源商店的默认位置,为C盘腾出空间

注意:这里的74488是用户名,win10用户 如果不知道是什么就这样操作1.右键“开始”,选择“运行”。2.输入“cmd”,点击“确定”。3.完成上述操作后即可成功打开命令提示符。命令提示符中会显示你的用户名,例如:C:\Users\用户名>资源商店的替换操作步骤为:1.剪切这个地址的文件夹,注意是Asset Store-5.x 不是 Asset StoreC:\Users\74488\AppData\Roaming\Unity\Asset Store-5.x2.剪切

2020-06-22 11:04:05 2224 1

原创 unity中进行输入的模板代码

using System.Collections;using System.Collections.Generic;using UnityEngine;//这里的特性也可以使用ProjectSettings中Script Execution Order 进行调节和替代[DefaultExecutionOrder(-200)]public class InputManager : MonoBehaviour{ public float Horizontal { get; privat.

2020-06-16 21:19:35 448

原创 unity中如何超简单的制作一个渐变天空盒背景

首先来到著名的免费网站 :https://www.pixilart.com点击“start drawing” 进入绘画页面,然后点击“FIle”=》“New”=》修改像素宽为1高度为4然后点击“new drawing”,分别自下而上或者自上而下选在每个像素并且赋值不同颜色,要求颜色是渐变的,比如:白=》浅蓝=》蓝=》深蓝 这样也可以,颜色自己随便取。主要掌握好渐变就可以了。最后,点击download,下载后导入到unity中就可以了...

2020-06-13 10:58:36 1985

原创 unity判断距离在多次反复调用的情况的节约性能办法。

需要进一步优化性能的情况下最好进行修改!比如: 开始时这样判断距离的:Vector3.Distance(item.transform.position,hit.point)<=bombRange*bombRange)修改为: var dis = hit.point - item.transform.position; if (dis.sqrMagnitude <= bombRange * bombRange) { ...

2020-06-10 23:18:08 836

原创 unity官方培训学习之:对于操控性比较强的游戏,输入解决办法

很多游戏需要能处理好玩家输入的操作并且给予及时反馈,有延迟所带来的体验会很不好。最近看了官方培训课程里面是这样做的:1、单独创建一个INPUT的类,处理玩家的各项输入比如移动、跳跃等。2、在INPUT类前面加入 [DefaultExecutionOrder(-100)]确定脚步最先执行。...

2020-06-10 23:10:58 270

原创 unity布娃娃加了RIGIDBOODY刚体后乱飞的问题

2020-06-06 20:48:32 2946 4

原创 UNITY解决摄像机无法同时渲染天空盒与场景的问题

unity双摄相机一个负责渲染天空盒一个负责渲染游戏场景。步骤:1、移除主摄像机的skybox2、设置副摄像机的skybox3、设置主摄像机为的clearflag为"depth only"4、预览游戏如果主副摄像机有渲染重叠的问题,可以将副摄像机调整到不影响的位置即可。...

2020-06-06 09:00:07 1881

原创 unity制作背包使用grid layout grounp组建直接编辑背包内图片显示,真香!

上下左右间距调整都分方便

2020-06-02 21:31:12 431

原创 unity中制作UI时可以直接设置按钮开关,不需要写代码

演示效果

2020-06-02 21:17:10 1516 2

原创 Unity系列之Play模式设置颜色,避免忘记运行时编辑白费功夫!

1、打开设置里面的Color2、选择淡红色3、运行时的颜色就会提醒自己了

2020-05-28 20:42:55 887

原创 blender学习之创建新物体后无法修改物体的参数解决办法

1、无法修改2、选项里面设置这个3、

2020-05-26 20:59:43 13135 3

原创 unity学习之动画状态切换后角色沉入地面里面

需要将角色动画类型更换为泛型,因为原格式是泛型的话,导入unity会造成错误。暂时的解决办法就是这样。

2020-05-26 20:51:03 3240 5

原创 unity官方内置网络unet的实例教程(八)

玩我们制作的这个小游戏的时候,是不是玩家出生甚至死亡都挤在一个地方挺别扭的啊?先来修改下这个问题吧:我们得利用这个叫NetworkStartPosition的组件,因为它内置有可用于执行处理产生位置的功能。先创建一个空物体,重命名为:Spawn Position 1,然后重置transform,选中它,在Inspector属性面板添加NetworkStartPosition组件,将它的位置Posi

2017-11-16 13:15:02 683

原创 unity官方内置网络unet的实例教程(八)

玩我们制作的这个小游戏的时候,是不是玩家出生甚至死亡都挤在一个地方挺别扭的啊?先来修改下这个问题吧:我们得利用这个叫NetworkStartPosition的组件,因为它内置有可用于执行处理产生位置的功能。先创建一个空物体,重命名为:Spawn Position 1,然后重置transform,选中它,在Inspector属性面板添加NetworkStartPosition组件,将

2017-11-11 15:49:08 1288

原创 unity官方内置网络unet的实例教程(七)

游戏制作到了这里,已经实现非常简单的打打杀杀了,不过大家控制的角色都是露面就开打,缺少了一点浪漫气息。接下来,制作些非游戏里面的怪物或者敌人吧,这样可以稍微增加些游戏的趣味性。当我们的客户端连接服务端的时候,生成了我们的角色,那些敌人应该也被服务端生成。首先,需要一个Enemy Spawner来生成敌人。回到Unity编辑器,在Hierarchy面板中新建一个空物体,重命名为:En

2017-11-10 09:33:23 2035

转载 Mangos源码分析(15):游戏对象的实现

狭义的游戏对象是指游戏世界中所能看到及可交互的对象,如玩家、怪物、物品等,我们这里也主要讨论这类对象在服务器上的组织及实现。  在大部分的MMOG中,游戏对象的类型都大同小异,主要有物品、生物、玩家等。比如在wow中,通过服务器发下来的GUID我们可以了解到,游戏中有9大类对象,包括物品(Item)、背包(Container)、生物(Unit)、玩家(Player)、游戏对象(GameOb

2017-11-09 16:12:18 422

转载 Mangos源码分析(14):Mangos预编译头文件及模块划分随想

其中game工程生成的库文件game.lib居然有近四百兆之巨,mangosd和realmd在连接这个库的时候也要花上好长一段时间。当然,mangos现在的代码量也确实不少了,这也就要考虑到大的工程项目的源代码管理及模块工程划分,至少,像mangos现在这样,代码全部放入game目录中,并且就做为一个大的工程的方式,其弊端是已经显现了。另外还有功能模块划分的问题,需要找一个功能的实现时,不知道该到

2017-11-09 16:11:39 300

转载 Mangos源码分析(13):再谈登录服的实现

关于登录服、大区服及游戏世界服的结构之前已做过探讨,这里再把各自的职责和关系列一下。        GateWay/WorldServer   GateWay/WodlServer  LoginServer LoginServer DNSServer WorldServerMgr                               |                     |

2017-11-09 16:08:59 304

转载 Mangos源码分析(12):服务器公共组件实现之事件与信号

有些类似于QT中的event与signal,我将一些动作请求消息定义为事件,而将状态改变消息定义为信号。比如在QT应用程序中,用户的一次鼠标点击会产生一个鼠标点击事件加入到事件队列中,当处理此事件时可能会导致某个按钮控件产生一个clicked()信号。对应到我们的服务器上的一个例子,玩家登录时会发给服务器一个请求登录的数据包,服务器可将其当作一个用户登录事件,该事件处理完后可能会产生一个用

2017-11-09 16:08:10 212

转载 Mangos源码分析(11):服务器公共组件实现之状态机

有关State模式的设计意图及实现就不从设计模式中摘抄了,我们只来看看游戏服务器编程中如何使用State设计模式。  首先还是从mangos的代码开始看起,我们注意到登录服在处理客户端发来的消息时用到了这样一个结构体:  struct AuthHandler  {    eAuthCmd cmd;    uint32 status;    bool (AuthSoc

2017-11-09 16:07:33 244

转载 Mangos源码分析(10):服务器公共组件实现之发包的方式

前面一直都在说接收数据时的处理方法,我们应该用专门的IO线程,接收到完整的消息包后加入到主线程的消息队列,但是主线程如何发送数据还没有探讨过。  一般来说最直接的方法就是逻辑线程什么时候想发数据了就直接调用相关的socket API发送,这要求服务器的玩家对象中保存其连接的socket句柄。但是直接send调用有时候有会存在一些问题,比如遇到系统的发送缓冲区满而阻塞住的情况,或者只发送了一

2017-11-09 16:06:29 200

转载 Mangos源码分析(9):服务器公共组件实现之环形缓冲区

消息队列锁调用太频繁的问题算是解决了,另一个让人有些苦恼的大概是这太多的内存分配和释放操作了。频繁的内存分配不但增加了系统开销,更使得内存碎片不断增多,非常不利于我们的服务器长期稳定运行。也许我们可以使用内存池,比如SGI STL中附带的小内存分配器。但是对于这种按照严格的先进先出顺序处理的,块大小并不算小的,而且块大小也并不统一的内存分配情况来说,更多使用的是一种叫做环形缓冲区的方案,mango

2017-11-09 16:03:25 208

转载 Mangos源码分析(8):服务器公共组件实现之消息队列

既然说到了消息队列,那我们继续来稍微多聊一点吧。  我们所能想到的最简单的消息队列可能就是使用stl的list来实现了,即消息队列内部维护一个list和一个互斥锁,putMessage时将message加入到队列尾,getMessage时从队列头取一个message返回,同时在getMessage和putMessage之前都要求先获取锁资源。  实现虽然简单,但功能是绝对满足需求的

2017-11-09 16:01:57 230

转载 Mangos源码分析(7):服务器公共组件实现之游戏主循环

当阅读一项工程的源码时,我们大概会选择从main函数开始,而当开始一项新的工程时,第一个写下的函数大多也是main。那我们就先来看看,游戏服务器代码实现中,main函数都做了些什么。  由于我在读技术文章时最不喜看到的就是大段大段的代码,特别是那些直接Ctrl+C再Ctrl+V后未做任何修改的代码,用句时髦的话说,一点技术含量都没有!所以在我们今后所要讨论的内容中,尽量会避免出现直接的代码

2017-11-09 15:59:17 382

转载 Mangos源码分析(6):登录服的设计之功能需求

正如我们在前面曾讨论过的,登录服要实现的功能相当简单,就是帐号验证。为了便于描述,我们暂不引入那些讨论过的优化手段,先以最简单的方式实现,另外也将基本以mangos的代码作为参考来进行描述。  想象一下帐号验证的实现方法,最容易的那就是把用户输入的明文用帐号和密码直接发给登录服务器,服务器根据帐号从数据库中取出密码,与用户输入的密码相比较。  这个方法存在的安全隐患实在太大,明文的

2017-11-09 15:58:40 290

转载 Mangos源码分析(5):服务器结构探讨之最终的结构

如果我们就此打住,可能马上就会有人要嗤之以鼻了,就这点古董级的技术也敢出来现。好吧,我们还是把之前留下的问题拿出来解决掉吧。   一般来说,当某一部分能力达不到我们的要求时,最简单的解决方法就是在此多投入一点资源。既然想要更多的连接数,那就再加一台网关服务器吧。新增加了网 关服后需要在大区服上做相应的支持,或者再简单点,有一台主要的网关服,当其负载较高时,主动将新到达的连接重定向到其他网关

2017-11-09 15:57:40 386

转载 Mangos源码分析(3):服务器结构探讨之简单的世界服实现

讨论了这么久我们一直都还没有进入游戏世界服务器内部,现在就让我们来窥探一下里面的结构吧。  对于现在大多数MMORPG来说,游戏服务器要处理的基本逻辑有移动、聊天、技能、物品、任务和生物等,另外还有地图管理与消息广播来对其他高级功能做支撑。如纵队、好友、公会、战场和副本等,这些都是通过基本逻辑功能组合或扩展而成。  在所有这些基础逻辑中,与我们要讨论的服务器结构关系最紧密的当属地图

2017-11-09 15:56:36 371

转载 Mangos源码分析(2):服务器结构探讨之登录服的负载均衡

回想一下我们在玩wow时的操作流程:运行wow.exe进入游戏后,首先就会要求我们输入用户名和密码进行验证,验证成功后才会出来游戏世界列表,之后是排队进入游戏世界,开始游戏...  可以看到跟前面的描述有个很明显的不同,那就是要先验证帐号再选择游戏世界。这种结构也就使得登录服不是固定配备给个游戏世界,而是全区共有的。  我们可以试着从实际需求的角度来考虑一下这个问题。正如我们之前所

2017-11-09 15:55:34 319

转载 Mangos源码分析(1):服务器结构探讨之最简单的结构

好的结构不是一蹴而就的,而且每个设计者心中的那把尺都不相同,所以这个优秀结构的定义也就没有定论。在这里,我们不打算对现有游戏结构做评价,而是试着从头开始搭建一个我们需要的MMOG结构。  对于一个最简单的游戏服务器来说,它只需要能够接受来自客户端的连接请求,然后处理客户端在游戏世界中的移动及交互,也即游戏逻辑处理即可。如果我们把这两项功能集成到一个服务进程中,则最终的结构很简单: 

2017-11-09 15:54:46 416

转载 mangos源码分析

mangos 的执行模型 一、线程分布: 1、主线程 main---- Master::Run() ,主要功能:初始化world、创建子线程、回收资源 2、WorldRunnable -------GS主线程 3、CliRunnable -----后台调试线程 4、RARunnable -------事件处理和分发线程 5、MaNGOSsoapRunnable---协议 

2017-11-09 15:52:07 600

PDG-PDFORIMG.zip

这个是个人费了九牛二虎之力,终于找到的最新的PDG转PDF工具,已经自己亲自试验过,绝对好用,win7 win10 都可以使用,无病毒,珍藏吧!

2019-11-12

c语言游戏编程的不错的好教程

使用c语言进行游戏开发,在开发的同时可以很快地掌握技术,学以致用。希望所有看到的或者正在学习c的朋友喜欢!

2017-11-08

photon中文教程带源码

本教程是学习photon的文档,开发者不但可以跟着学习,还可以直接查看源码

2017-11-08

空空如也

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

TA关注的人

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