- 博客(50)
- 资源 (9)
- 收藏
- 关注
原创 UnityEditor-批处理Texture,spriteEditor,代码设置Pivot失效问题
需求起因,最近制作角色2D八方向的动画,美术提供的序列帧图片资源,角色不同动作不同方向的图片大小和角色实际的中心点是不一致的,如图所示:攻击和溃败的序列帧图片尺寸和角色在图片中心位置是不一样的。这样会导致一个问题:在动画状态切换的时候,犹豫锚点不一致的原因会导致位置的瞬间偏移,但这样导出序列帧资源也有一个好处是最大程度的降低图片尺寸。那么解决这个问题方案是修改序列帧图片的锚点,将图片锚点设置在角色脚下,这样切换动画的时候就会以脚底为锚点解决位置偏移的问题。代码设置Texture锚点,只需要先
2020-05-12 17:40:14
2328
原创 Unity-常用的Attribute标签
AddComponentMenu描述AddComponentMenu属性使您可以将脚本放置在“组件”菜单中的任何位置,而不仅仅是“组件->脚本”菜单。您可以使用它来更好地组织“组件”菜单,这样可以在添加脚本时改善工作流程。using UnityEngine;[AddComponentMenu("Transform/Follow Transform")]pub...
2020-03-20 14:28:22
515
原创 C#(游戏开发)枚举+按位与或运算的特殊用法(二)权限的设置与检查
上一篇分享了枚举+与或运算符的技巧 枚举的集合这里分享一下 权限的设置与检查(二)权限的设置与检查需求如下:玩家的联盟(战队)系统中,玩家存在阶级:盟主、官员、使者、群众,而盟主可以设置阶级成员的管理权限,权限包含:查看联盟成员、联盟交易、联盟帮助、全体邮件、邀请入盟、同意入盟、踢出联盟、联盟转让、修改联盟名称。盟主的权限:修改联盟名称、查看联盟成员、联盟交易、联盟帮助、全...
2020-03-13 11:39:49
485
原创 C#(游戏开发)枚举+按位与或运算的特殊用法(一)枚举的集合
这里记录一下在游戏开发中,系统设计及业务逻辑处理中可以用到的枚举的一些小技巧。(一)枚举集合的判断处理集合判断通常用于子集的判断,判断某个大类是否包含某个类型假设当前我们有一个物品类型的枚举public enum EItemType{ // 1001——1004 资源 Food = 1001, Wood = 1002, Iron = 1003, Oil = 1004,...
2020-03-13 10:20:42
1692
原创 Unity——UGUI扩展 NoDrawGraphic
public class NoDrawGraphic : MaskableGraphic { public override void SetMaterialDirty() { } public override void SetVerticesDirty() { } protected override void OnPopula...
2020-02-20 18:48:09
440
原创 改善C#程序的50种方法 读后小记
Effective C# 改善C#程序的50种方法作者:Bill Wagner译者:DSQiu来源:Effective C# 中文版改善C#程序的50种方法 第二版原则1:使用 属性(Poperty)代替可直接访问的数据成员(Data Member)原则2:偏爱 readonly 而不是 constC# 有两种常量:编译时常量和运行时常量。你可以使用 readonly 关键...
2020-01-16 21:04:36
401
原创 Unity——当ui挂载Content Size Fitter组件后通过Rect获取的UI物体的 width 和 height
using FitMode = UnityEngine.UI.ContentSizeFitter.FitMode;public static Vector2 GetContentSizeFitterPreferredSize(this RectTransform rect,ContentSizeFitter contentSizeFitter){ LayoutRebuilder.For...
2019-12-28 16:20:47
2422
原创 RectTransformUtility.RectangleContainsScreenPoint 妙用
单纯记录一下,RectTransformUtility.RectangleContainsScreenPoint(rect,position,camera)判断第二个参数代表的位置是否在第一个参数rect的范围内,妙啊
2019-11-28 18:26:12
2728
转载 游戏任务设计(4):Puzzle、Challenge和任务叙事
转自游戏任务设计(4):Puzzle、Challenge和任务叙事Puzzle型任务(解谜任务)如果这篇文章写作于1990年而不是2010年,肯定会写“Puzzle型任务的设计目的是智力挑战和由此带来的愉悦感”。就像神秘岛里的层层机关,就像国家宝藏里的条条线索,抽丝剥茧到最后揭开所有谜题……多有趣啊。就连在大众传媒和一般人的想象中,游戏设计师们干的也应该是类似这样的工作:他们(经常也有她...
2019-06-25 10:19:32
2428
转载 游戏任务设计(3):Collect与Hunt任务
转载自游戏任务设计(3):Collect与Hunt任务这次还是两个重要大类……继续继续。常见任务种类这就差不多了,剩下的2+1种其实都是特殊用途了,还得再整理整理思路。Collect型任务(收集任务)说完了MoveTo型的任务和Farm型的任务,接下来可以说点确实没啥内涵的东西了。Collect任务就是任务里最好设计的一类。几乎每类常见游戏设计都是冲着某一种人性的弱点去的,收集任务...
2019-06-25 10:17:37
1207
转载 游戏任务设计(2):MoveTo与Farm任务
转载自游戏任务设计(2):MoveTo与Farm任务游戏任务设计(2):MoveTo与Farm任务照例,我知道你们都不爱看的枯燥无聊的理论文章……第二部分。说真的我没想到这个命题竟然能扯出这么多,写起来收不住了……所以这篇只是设计方法的(上)。工具箱任务设计的方法说简单很简单,就是对各种设计手法的灵活使用。说复杂也复杂,因为任务的种类实在是多种多样。一个像魔兽世界这样庞大的游戏起码...
2019-06-25 10:15:39
1446
转载 游戏任务设计(1):概念与简史
转自旗舰评论——战略航空军元帅的旗舰 游戏人物设计(1):概念与简史前言我知道没人爱看理论文章。可偶尔也得定期坐下来写点枯燥的设计理论文章,以防本旗舰彻底变成一个专业游戏评论博客。虽然我在写评论的时候从来都是本着“写评论是为了写设计要点”的方针,但是这事情干多了,还是不免会陷入就事论事的陷阱之中。也经常会有人问“FNV和F1、F2的任务系统不是一样的吗”这种问题,有时候也还是应...
2019-06-25 10:13:11
2498
原创 Unity Text超框 文字滚动循环显示
在制作Text的预制时,注意分为三层name是一个mask遮罩,container是一个空节点,Title 和Title循环滚动是两个Text调用方式:获取到name的transform,Create出来即可AutoScrollText.CreateFromText(trans,title) public class AutoScrollText:MonoBeha...
2019-06-10 11:31:56
4995
7
原创 Unity Text文字超框,末尾显示‘...’省略号
参考博客Unity 实现文字过长显示省略号,// 超框显示... public static void SetTextWithEllipsis(this Text textComponent, string value) { var generator = new TextGenerator(); var r...
2019-06-10 11:07:25
3714
原创 UnityEditor——扫描配置文件中配置的资源路径是否正确
在开发过程中,对于游戏中使用的美术资源,很多时候都是配置在配置文件中的,但是随着不断地开发,配置文件和美术资源可能都经历了多次更新,很有可能深藏在配置文件中的资源路径是不对的,可以通过扫描配置文件,将所有的路径记录下来,然后在检查是否通过路径可以加载到对应资源的方式来检测。在这里提供一下大体思路和代码,具体项目需要具体分析。该脚本用于将配置文件中的路径存起来。using System...
2019-05-31 11:01:01
569
原创 UnityEditor——查找一个美术资源在项目中全部预制的引用并输出预制路径(多线程法)
在项目后期,美术面板换了几波后变得十分庞大,有大量旧的美术资源可能已经被弃用了,需要删掉,可以通过这个方式查找某个资源在全部预制中的引用并输出路径,如果没有引用了可以删掉,代码如下using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text.Re...
2019-05-17 11:06:55
1338
1
原创 UnityBug——Poolable Component 失效问题
问题现象从 Pool 中取出的 GameObject,通过 GetOrAddComponent 获取其上的 Component 可能失效问题分析Destroy 的 Component 不会立即销毁,会在当前 Update 之后 Rendering 之前真正销毁在 GameObject 被 Push 进 Pool 时,Destroy 了其 Component正好在当前 Updat...
2019-05-17 09:58:23
327
原创 Unity——Editor下遍历制定目录下Prefab
[MenuItem("Tools/检测Text字体设置是否规范")] public static void CheckTextFont() { string[] allPath = AssetDatabase.FindAssets("t:Prefab", new string[] {"Assets/GameResources/UI"}); for ...
2019-05-15 18:07:34
6265
1
原创 Unity——在Button上增加公有CD,解决连点、误点问题
问题描述:1.在开发过程中,服务器延时情况下可能会出现由于连点造成的问题,例如:当前有一个道具,使用这个道具可以召唤一个英雄,点击使用后向服务器发送消息,正常情况下服务器消耗该道具后将没有道具进行下一次召唤,但当网络延迟或其他情况下,客户端未能及时更新数据,再一次点击使用道具,再次服务器发送消息,此时的道具是不足的,可能会造成其他影响。2.同一个界面存在互斥按钮,两者不可同时点击,在移动端...
2019-04-18 10:13:12
1714
原创 Unity优化关注点
cpu占用:一般考虑两种档位-超过33ms的帧和超过50ms的帧,来进行量化 这种就需要找到cpu占用比较多的帧,然后分析消耗cpu的具体函数,再针对业务需求进行优化内存占用:检查内存的走势,是否存在异常,比如持续上升或者快速上升,对于低端机,建议中体内存在150M左右 对于堆内存(Reserved Mono Memory)检查峰值(因为堆内存不会释放,所以峰值既是堆内存的占用量),...
2019-04-04 18:29:31
556
原创 Unity优化-Model/Mesh相关通过控制选项进行部分优化
Model/Mesh相关MeshCompression mesh压缩,分成高中低三档,如果开启有可能导致Mesh变形 使用时最好让Mesh看上去没变太多 Read/Write Enable unity会把mesh数据传给GPU,如果开启Read/Write,CPU也会保存一份Mesh数据,开启Read/Write可以在运行时获取Mesh的数据、或者在程序中生成Mesh...
2019-04-04 17:46:14
2568
原创 Unity优化——解析AssetBundle独立加载时连带资源
优化美术资源查看每个ab独立加载时需要连带加载多少东西通过该脚本可以在指定目录下生成几个解析文件,分别按名字、加载大小、加载时依赖数量来排序从而优化Assetbundle的资源分配using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;...
2019-02-19 13:59:36
484
原创 UnityEditor——利用Prefab的Refrences引用来查找预制体的组件
前言:项目进行到后期,老板觉得之前的美术效果不好,让美术出一个新的进度条美术效果图,将之前全部面板的滑块全替换掉。想了半天也没有什么合适的方法,因为每个面板的需求和样式不同,每个滑块的预制体设置肯定是不一样的,如果全部一键替换的话可能会出现更大的问题。手动替换的话这么多预制体都不知道到底有哪些有滑块哪些没有用到滑块,决定于是写一个工具遍历UIPrefab,先将使用滑块的预制体路径输出出来,然后...
2018-10-19 15:31:11
4417
原创 Unity算法——扇形和圆形技能伤害判断
扇形攻击范围 /// <summary> /// 伞形攻击范围 /// </summary> /// <param name="attacker">攻击方</param> /// <param name="attacked">被攻击方</param> /// &a
2018-04-25 20:02:46
7191
原创 Unity算法——矩形技能伤害判断
前言在大型游戏中在Unity使用物理引擎是十分消耗性能的,特别是在移动端设备中,如果过多的使用物理引擎来进行行为判断,对设备性能消耗是很厉害的,一般情况我们在Unity游戏开发中,会通过算法来进行技能伤害判断,一个较为常见的伤害判断——通过矩形范围敌判断敌人是否在攻击范围之内。Unity物理引擎的底层实现原理在2D游戏中,物理引擎判断是否在攻击范围原理是AABB包围盒,一个2D矩形,中心点到矩形包...
2018-04-25 19:39:54
7127
1
原创 Lua 实现枚举的特性和功能
前言 Lua是一种面向过程的编程语言, Lua的值类型只有nill boolean number string。 Lua的引用类型只有:function table userdata thread 。 但是Lua中的Table几乎是万能的, 我们来试一下如何用Lua实现枚举的特性和功能。实现 枚举的特性是,当里面的第一个元素初始值确定之后,后面的元素累加1,如果不...
2018-04-13 14:09:10
7873
原创 Lua 实现面向对象 、继承、多态
前言 在使用Unity进行游戏开发的时候,可以通过Lua进行脚本的编写,但是Lua与C#不同,C#是一个面向对象的语言,Lua是面向过程的语言,如何用Lua来实现面向对象编程,实现对象的继承和多态的特性呢。Lua元表(Metatable)和元方法(__index) 在Lua的table中我们可以访问对应的Key来得到Value值,但是无法对两个table进行操作。Lua提供...
2018-04-08 20:10:16
3709
5
原创 Unity3D 小地图 (1) 等比例映射
在一些地图比较小的游戏还有MOBA游戏中,小地图是通过等比例映射的方式实现的,有些人在进行开发游戏的时候,是通过另一个摄像机渲染图片,实时同步在小地图上的,但这种做法十分消耗性能且功能拓展性很差, 是不推荐使用的。根据需求进行分析:1.获取角色在地形上的相对位置坐标。 角色相对地形位置=角色世界坐标-地形世界坐标2.获取角色在地形上的比例位置,以Vector2(x,z)的形式存储。 角...
2018-03-31 17:32:01
3594
原创 Unity3D 小地图 (2) 以角色为中心点等比例映射地图
一个简单的Demo演示,在很多大型RPG,FPS游戏中,地图是以人物为中心点等比例映射的,很多人在做游戏的时候,是通过另一个摄像机渲染图片,实时同步在小地图上的,这种做法十分消耗性能且功能拓展性很差。像GIF图中当角色在边界的时候会露出下方的背景这个问题也很好解决,在正式游戏开发中,可活动地形都是远小于世界地形的。根据需求进行分析:1.获取角色在地形上的相对位置坐标。 角色相对地形位置=角色...
2018-03-31 16:54:28
2316
原创 Unity3D 小地图(3) 实时同步相机可视区域
在小地图上同步摄像机的可视区域基本可以分为这两个步骤1,相机的可视区,找到相机四个角相应的世界位置 从相机的四个角,发出四条射线,射向地面。 建立一个数组存储射线与地面相交的四个点.2,将相机可视区域同步到小地图中 可视区域相对地形的位置 = 世界坐标 - 地形位置 可视区域相对地形的比例 = 相对地形的位置/地形的宽高 同步...
2018-03-31 14:34:30
2519
原创 Unity3D 运用GL屏幕画图(阴阳师画符)
运用GL屏幕画图基本效果阴阳师火了之后,市面上很多游戏又多了一个模块——画符抽卡,可以通过使用Unity自带GL类来实现这个功能,上面一篇博客Unity研究 GL中有关于GL类的初步解析。今天直接来分析需求 看看阴阳师画符抽卡是怎么实现的:1,绘图——鼠标按下进行拖拽,在屏幕中留下鼠标轨迹。2,存图——松开鼠标,绘制的图片按比例映射到Texture上。Unity的GL是通过两点之间连线来构成图像的...
2018-03-30 17:05:02
3954
原创 Unity3D研究 GL详解
Unity内置了GL类 封装了OpenGL,可以通过GL类来实现一些简单的画图操作,根据Unity官方API来研究一下。将官方GL的实例代码考到Unity执行后是这个效果代码中有这样一个回调是属于屏幕渲染的,需要在API里了解一下 public void OnRenderObject()Unity的生命周期执行顺序中,屏幕渲染会在GameLogic后会执行其中有几个屏幕渲染回调API来了解一下官...
2018-03-29 21:05:38
10644
1
原创 Unity3D 坐标系浅析(2): 屏幕坐标系、视图坐标系
世界坐标系:以世界坐标(0,0)点为参考物记录的相对位置。物体坐标系:以父类坐标为参考物记录的相对位置。相机坐标系:以相机坐标为参考物的 记录的相对位置。视图坐标系:左下角 (0,0) 右上角(1,1)屏幕坐标系: Input.mousePosition左下角 (0,0) 右上角(屏幕的宽 ,屏幕的高 )屏幕坐标系: 像素坐标系 通过Debug.Log...
2018-03-29 19:23:39
2991
原创 C# Bug解决——InvalidCastException: Cannot cast from source type to destination type.
InvalidCastException: Cannot cast from source type to destination type.不能从源类型转换为目标类型。这个问题的原因主要是类型转换出错了,其中一个不易察觉的情况是将父类强制转换为子类的时候出错,也就是在多态时向下转型可能出错什么是多态:父类的指针指向子类,调用子类的方法先给大家看一下我的代码问题出在哪里,供与大家参考可以明显看到,...
2018-03-29 16:20:18
13627
原创 C#——if 和 Switch 的区别,与在内存中的占有量
在条件表达式中:if()是范围判断:比如if(tmp<10)在多层条件判断时 if会执行多次if()else if()else()switch()是具象判断switch 在多条件判断时只判断一次switch(4)case 1:case 2:case 3:case 4:总结:在范围判断时尽量使用if(),在多条件判断时,尽量使用Switch()...
2018-03-28 09:53:10
3132
原创 Unity——Bit编程,可用于计算技能解锁\装备购买并初步加密,降低内存占有量并提高安全性
在游戏开发中,有时候我们通过进行Bit级别的编程,可以实现技能解锁\装备购买等存储,并实现初步加密,降低内存所占空间,并极大提高数据安全性!—————————————————————————————————————假设当前角色共有8个技能,我用一个Byte来存储这些信息。0000 0000 表示当前我没有学习任何技能0000 0001 表示为当前我学习了第一个技能。这样大家可以初步看出我是通过...
2018-03-27 20:51:15
774
原创 Unity——通过byte字节流进行网络传输,如何将一个类转换为一个byte字节流,再从byte字节流转换为一个类
客户端之间进行网络传输的时候, 如何将一个类转换为字节流, 再从字节流转换为一个类在类转换为Byte字节流的时候 需要定义一个规则/协议...协议即一个规定, 在字节流的什么位置存储什么样的信息, 但要注意,除了Int short等固定长度类型, 还有String不定长度类型, 我们通常存入一个string的长度后面再存内容,这样方便反解析zi将一个Girl的信息 转换为字节流 再转换回Gi...
2018-03-27 19:30:35
4582
原创 Unity——Java服务器与C++服务器的区别,在对接的时候为什么会出现数据混乱的情况。
首先我们回顾一下Unity中有哪些数据类型char -- C++中是1bit, 在C#Java中是2bitzbool --1Bit整形 byte -- 1byte 8bit short-- 2byte 16bit int--4byte 32bit longLong类型比较特殊,在32位的机器上时占 4byte 64位机器上站8byte。很多通信用的都是long整形,那如何才能在网络通讯的时候...
2018-03-27 15:59:39
1604
A+Pathfinding+Project+Pro+3.6.unitypackage
2018-01-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人