任务引导系统导航设置
放置NPC我们先在SceneMainCity放上NPC的prefab,然后在NPC的前方放上定位点,这个定位点就是Player导航的时候和NPC对话的站位。
然后在场景中放一个MapRoot对象,在上面挂载MainCityMap脚本,并打上“MapRoot”标签,这个脚本用来记录各个定位点的位置。
123456789using UnityEngine;namespace DarknessWarGodLearning{ public class MainCityMap : MonoBehaviour { public Transform[] NpcPosTrans;//在Inspector上指定各个定位点 }}
读取MapRoot内的数据在MainCitySys中获取进入主城的位置信息:
1234567891011121314151617private Transform[] npcPosTrans;public void EnterMainCity(){ //... resSvc.Asyn ...
任务引导系统数据配置
每一个客户端进入主城,都会有一个个人的任务数据,任务数据通过配置文件读取,任务进度则需要通过服务端存储。
任务数据下面是一个任务数据xml:
ID表示任务号,是用来读取任务数据和存储任务进度的关键。
npcID表示这个任务需要对话的npc
dilogArr表示对话内容
actID表示角色动作的ID
coin和exp表示完成任务的奖励。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364<?xml version="1.0" encoding="UTF-8" standalone="yes"?><root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <item ID="1001"> <npcID& ...
角色信息界面
角色信息展示展示角色使用Render Texture,这个Render Texture相机放在Main City Scene场景当中,每次进入主城场景时,先把这个摄像机关闭,
MainCitySys:
123456789101112131415161718192021private Transform charCamTrans;public void EnterMainCity(){ MapCfg mapData = resSvc.GetMapCfgData(Constants.MainCityMapID); resSvc.AsyncLoadScene(mapData.sceneName, () => { //加载游戏主角 LoadPlayer(mapData); //打开主城场景UI mainCityWnd.SetWndState(); //播放主城背景音乐 audioSvc.PlayBGMusic(Constants.BGMainCity); ...
主城配置摘要
主城灯光烘焙完全烘焙灯光,所有的光源改为“baked”模式,可以通过Light Explorer面板进行确认和设置。
打开Lighting面板,在Environment选项卡中将Environment Lighting的Source改为Color。在Scene选项卡中关闭Realtime Lighting只打开Mixed Lighting,打开烘焙全局光,Lighting Mode选择Subtractive。
在游戏场景的static物体中,玩家经常看到的物体的Mesh Renderer组件内的Lightmapping参数——Scale in Lightmap都设为1,玩家看不到的装饰性物体,Scale in Lightmap都设为0.1或0.2
烘焙参数:
Indirect Resolution:间接光分辨率
Lightmap Resolution:灯光贴图分辨率
Lightmap padding:灯光贴图的间隙,贴图拼合时的空隙
Directional Mode:如果场景材质有法线贴图,打开Directional会烘焙法线
Unity - Manual: Lightmappi ...
MySQL摘要
安装wampServerWampServer是一款由法国人开发的Apache Web服务器、PHP解释器以及MySQL数据库的整合软件包。免去了开发人员将时间花费在繁琐的配置环境过程,从而腾出更多精力去做开发。
WampServer, la plate-forme de développement Web sous Windows - Apache, MySQL, PHP
安装NavicatNavicat 是香港卓軟數位科技有限公司生產的一系列 MySQL、MariaDB、MongoDB、Oracle、SQLite、PostgreSQL 及 Microsoft SQL Server 的圖形化資料庫管理及發展軟體。它有一個類似瀏覽器的圖形使用者介面,支援多重連線到本地和遠端資料庫。它的設計合乎各種使用者的需求,從資料庫管理員和程式員,到各種為客戶服務並與合作夥伴共享資訊的不同企業或公司。
Navicat | 支持 MySQL、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL 的数据库管理
Navicat使用示例在使用软件之前,确保 ...
服务器框架
服务器框架教程中使用的是单服服务器。
分为四层:
通用服务层——NetSvc、CfgSvc、TimerSvc。CfgSvc类似客户端的资源服务,只不过服务器没有那么多资源要求,所以只处理配置数据
各系统层——LoginSys等,服务器系统层比较细分,由于服务器没有UI要求,代码量也较低
缓存层——CacheSvc,各系统层直接跟缓存层打交道,缓存就是将数据库中的部分数据先缓存在内存中,玩家上线时读入缓存,下线时写入数据库
数据库层——DBMgr
缓存层和数据库层是作为服务器特有的功能。
服务器启动逻辑我们用之前的“PESocketExample”项目来制作我们的游戏服务器,这一节完成后的资源管理器界面如下:
整个服务器项目也比较依赖单例,我们先新建一个单例模板SingletonPattern
12345678910111213public class SingletonPattern<T> where T : class,new(){ private static T instance; public static T Instance ...
深入C#字符串
123456789101112131415161718192021222324252627282930313233343536using System;namespace CSharp高级篇学习{ class Program { static void Main(string[] args) { //使用string类型去储存字符串类型 string s = "www.dfghjkl.com"; //获取字符串长度 int length = s.Length; Console.WriteLine(length); //字符串的判断 if (s == "xxx") { Console.WriteLine("相同"); ...
String.Format()
String.Format 方法的几种定义:String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项。String.Format (String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的文本等效项。String.Format (IFormatProvider, String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的文本等效项。指定的参数提供区域性特定的格式设置信息。String.Format (String, Object, Object) 将指定的 String 中的格式项替换为两个指定的 Object 实例的值的文本等效项。String.Format (String, Object, Object, Object) 将指定的 String 中的格式项替换为三个指定的 Object 实例的值的文本等效项。
常用的格式化数值结果表
字符
说明
示例
输出
C
货币
str ...
正则表达式(Regular Expression)
正则表达式介绍什么是正则表达式?Regular Expression,是计算机科学的一个重要概念,它使用一种数学算法来解决计算机程序中的文本检索、匹配等问题,正则表达式语言是一种专门用于字符串处理的语言。在很多语言中都提供了对它的支持。C#也不例外,它可以帮我们解决下面的问题:
检索:通过正则表达式,从字符串中获取我们想要的部分
匹配:判断给定的字符串是否符合正则表达式的过滤逻辑
正则表达式表述了一个字符串的书写规则,可以用来判断用户输入的密码和邮箱是否合法。
正则表达式的组成正则表达式就是由普通字符以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。
常用正则表达式的方法和委托在C#中的正则表达式方法位于System.Text.RegularExpressions中,下面介绍其中的Regex类的一些静态方法和委托
静态方法IsMatch静态方法IsMatch:返回值bool,用于判断指定的字符串是否与正则表达式字符串匹配,它有三个重载方法。
1bool IsMatch(string input,string pattern);
参数: ...
Linq
1. 数据的初始化和LINQ的第一个基础使用Kongfu Class
1234567891011class KungFu { public int Id { get; set; } public string Name { get; set; } public int Power { get; set; } public override string ToString() { return string.Format("Id:{0},Name:{1},Power{2}", Id, Name, Power); } }
MartialArtsMaster Class
1234567891011121314151617/// <summary>/// 武林高手/// </sum ...