自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 问答 (1)
  • 收藏
  • 关注

原创 Spine的使用技巧笔记

中心点:比如一个轮子要设置中心点骨骼,等下做动画时要让他旋转,但如果中心点设置不好,转起来就会偏移。为了方便定位中心点,在PS里时,就可以在图片中心点加上一个标记,这样方便在spine中定位。空白图层:比如植物大战僵尸里面的铁桶僵尸,铁桶有三个状态,好的,损坏的,严重损坏的,还有消失的。最好做成四张图,包括一张空白图,这样,在spine就可以调用空白图来表现消失。那为什么不在spine直接关掉这个图片不就也消失了吗?因为多张图片在一个插槽里面,你关了一张图片,另一张关不了的,而插槽又不能关。...

2022-05-16 12:06:30 1376

原创 Unity游戏制作

一款游戏制作出来才有意义,概念和想法再有趣都没用的。游戏只有被玩了,才刚开始其设计的第一步。一款游戏比如lol,当他的框架被设计出来后,还不是一个游戏,他只是一堆程序而已。而当我们开始玩它了,开始调整其数值和玩法时,越来越好玩时,这时,才是这个游戏设计的开始。好游戏都是玩出来的,不是设计出来的,一个好的游戏一定是被一个好的玩家玩出来的。...

2022-04-21 19:29:57 1924

原创 Unity 一些注意事项

不要习惯于在unity面板赋值,这样你的资源导出后再利用时,这些赋值消失。也不要在public int a = 2;这样直接赋值,当场景加载后,可能不会加载出来,而应该在start等里面做赋值的动作。

2022-04-17 22:42:31 1379

原创 Unity 设置预制体的格式问题

预制体的设置,应该是两层,第一层是一个空的gameobject,目的是定位。为什么要定位,一般有两个原因,第一个,图片大小参差不齐,很难做到中心点统一,为了在生成的时候可以统一一个中心点,这样就需要一个空的gameobject来调整定位。第二个,有些预制体不是一个图片组成,而是多个图片拼接,比如阴影等,会很难调整中心点,所以需要空的gameobject来调整定位。但因为有两层,所以代码等组件要怎么放就是问题了,原则上,能放第一层的代码,放第一层,比如移动的代码一定要放第一层,因为生成时是用第一层的位置.

2022-04-17 11:53:51 1621

原创 Unity 子物体

植物大战僵尸里,我定制了两种太阳,第一种就一层,第二种有两层(就是有子物体)。第二种的第一层只是一个gameobject,目的是定位用。全部的组件都放在第二层上,包括box collider和代码Click_Sun。我将第二层的tag设置为tag_Sun和Layer设置为Layer_Sun,当我点击它时,其实我就穿过了第一层,不理第一层,直接穿透到第二层,所以可以直接获得组件,不用通过第一层再找子物体,再通过子物体获得子组件。这样做的好处,是可以用同一个代码来处理第一种就一层,第二种有两层(就是有子.

2022-04-17 10:49:18 2008

原创 Unity粒子系统

Duration指的是整个粒子系统从start到stop的时间,不loop的情况下,Start Lifetime指一个粒子的生命周期。如果Start Lifetime为1s,Duration为2s,且只有一个粒子只发射一次,那么,第一个粒子发射,并持续1s钟,然后再过一秒钟什么都没有,然后就整个系统停止。如果Start Lifetime为2s,Duration为1s,那么,整个系统还是会持续2s,等该粒子2s完成后,整个系统停止。如果是loop呢?那么Duration就是指一个loop周期的时长。.

2022-04-07 16:33:07 1114

原创 Dotween的一些技巧笔记

transform.DOLocalMove(),这个local指本地坐标,其实就是相对于父对象的坐标系,所以,如果你没有父对象,那么,DoMove和DoLocalMove应该是同样的效果。transform.DOMove(Vector3.one, 2).From(true);在这里,From的效果,是从Vector3.one位置移动到原位置。transform.DOMove(Vector3.one, 2).SetRelative(true);在这里,SetRelative的效果,是从原位置移动一个Ve.

2022-04-07 09:28:51 1074

原创 关于监听者模式使用的注意事项

EventCenter.instance.EventTrigger("Destory", this); EventCenter.instance.AddEventListener("Destory", GetDown);EventTrigger是发出指令的一方,AddEventListener是收到指令并执行GetDown这个方法的一方。他们两个靠的是"Destory"这个暗号来匹配,所以,这个暗号不能雷同,否则两个发命令的人用同一个暗号发命令,那么,所有不相关的人也会收到这个命令。那么,..

2022-04-04 21:43:44 344 1

原创 MO3音频文件格式可以用XMplay打开并转换格式

有时候会遇到游戏里面的音频文件格式是MO3的,这种格式没法打开,也没法用。但可以用XMplay来打开并转格式。http://www.un4seen.com/先到上面这个网站下载XMplay然后在设置里Output里的Device,选择WAV Write,勾选Auto-filename自动命名,在点击右下角的Apply。这时,再去点击播放按钮,会自动弹出保存界面,选择保存位置,就可以导出为WAV音频格式了。而且,在一个MO3里一般有多个音频,导出为WAV时会分开为不同的音频。但音频大小会变大,因为之

2022-04-02 21:59:09 2694

原创 Unity中的prefab预制体要加一个父GameObject

Unity中的prefab预制体要加一个父GameObject为什么?因为如果你不加,你没法调整物品的中心点,这样不好生成时定位。

2022-03-26 17:17:58 2277 1

原创 Unity,spine,layer

Unityspine可以修改,而不用重新设定spine在Unity中新建了skeletonAnimation之后,会要导入SkeletonData,而当你在spine里修改了图片或调整效果后,重新导出文件,然后在Unity文件夹里面替换了spine的文件,然后,在Unity里之前建立的skeletonAnimation会自动更新,不用再处理。图层Layer:在spine的skeletonAnimation里,最上面的Layer图层和下面的SkeletonAnimation组件里面的Sorting L

2022-03-26 16:45:13 2850

原创 C#中Unity中,int如果做除法运算可能只会得到0

如果你int a = 4,int b = 5,那么a / b = 0,所以,你要得到正确的小数,要用float

2022-03-14 21:21:57 4177

原创 Unity中EventSystems的使用情况

举例,每当击杀一个野怪时,英雄的金钱会增加,经验值会增加,任务会计数,于是,可以在野怪身上挂一个EventTrigger脚本,每次野怪被击杀,这个脚本就发出指令,然后金钱、经验值、任务脚本分别监听到这个事件。这里要注意,金钱、经验值、任务脚本都是全场唯一的,所以这样用监听比较合理。另一种,比如英雄攻击野怪,野怪受到一次攻击,要触发血量变化、动画变化、任务变化等等。但这个血量、动画、任务只是单独属于这个野怪的,如果这时用监听,就会变成英雄攻击野怪A,然后野怪A、B、C都会同时监听到,这是不合理的。这种情况.

2022-03-13 15:55:05 2583

原创 关于Spine的一些技巧

如果隐藏图层,比如我有两个手的图片,一个是拳头一个是手掌,我要默认姿势是手掌,只有攻击时才换成拳头。那么,我要在设置模式下,将拳头的图片取消圆点,记住,千万不要取消插槽,不是插槽,是图片,这点要特别注意。...

2022-03-12 10:01:48 834

原创 关于Spine导入Unity的一些问题

如果你已经将Spine文件导入了Unity,然后发现有东西要在Spine里改变,然后再要导入Unity。可以在Spine改好,然后导出文件,然后不要拖入Unity界面里,因为Unity会将重复名字进行新的命名,这样不会替换原先文件。所以你要拖入这个项目的文件夹里面,替换掉这个文件,注意,如果你替换了json文件,里面的版本号又要再次更改为3.8才能读取正常。有时候,你只更改了骨骼,好像就只需要替换三个文件里面的json文件就行,你在Spine导出后,看下三个文件的创建日期,如果有老的创建日期,说明这个文件.

2021-09-29 12:17:14 2824

原创 Unity 用对象池来存储和取出prefab的注意事项

解耦代码public class ObjectPool{ private static ObjectPool instance; private Dictionary<string, Queue<GameObject>> objectPool = new Dictionary<string, Queue<GameObject>>(); private GameObject pool; public static Obje

2021-09-16 21:47:32 546

原创 Unity 攻击的判定框时长

攻击时,判定框出现的时长不能只做一帧,这样很可能会丢帧,然后错过这一帧,导致攻击判定框丢失,而不与敌人碰撞,导致攻击不出效果。所以,要适当延长几帧给判定框。但又不能过长,过长容易导致重复攻击,特别是在敌人被击退后又再次进入判定框时,会变成两次伤害。判定框又不能跳帧,比如一个攻击动作,第三帧出现,第四帧消失,第五帧又出现,这样会造成两次攻击效果。...

2021-09-15 22:34:10 266

原创 Unity 骨骼动画

Unity做骨骼动画,人物跑步时,胯关节的横坐标世界坐标是不变的,最多变纵坐标上下移动胯部。这样画的动画,才会在播放时合理。

2021-08-24 16:46:14 416

原创 Unity OnCollisionEnter和OnTriggerEnter

OnTriggerEnter的脚本挂在A上面,A和B都可以只要有collider就可以,不用rigidbody也行,可以触发。但OnColliderEnter的机制还没尝试,可以找个机会试验一下。

2021-08-17 16:36:03 362

原创 Unity Animator 如何用混合树转到混合树,并实现角色移动后保持朝向不变

做2D动画,我们都知道用混合树做四个朝向的移动,但是,一旦松开按键,角色就会回到idle的朝向,我想让他朝右边移动后停下,依然朝向右边静止。我有八个动画,分别为runFront,runBack,runRight,runLeft,idleFront,idleBack,runRight,runLeft我希望,当我runRight后停下,播放idleRight的动画。而且想都用混合树处理,怎么做?先上代码public class PlayerMove : MonoBehaviour{ pri.

2021-08-02 22:32:21 685

原创 Unity collider 2D的冲突的一个问题

之前遇到一个问题,做了一个enemy,他可以发射子弹,这个enemy上挂一个collider 2D,然后子弹bullet_2有一个collider 2D,我又做了一个player,player也有自己的子弹bullet_1,然后player有一个collider,player的子弹有一个collider,这就有四个collider了。我将这些gameobject都分到不同的层里面,有enemy层,enemyBullet层,player层,playerBullet层,然后将它们之间的一些碰撞去除。然后,.

2021-07-28 11:59:32 458

原创 Unity 自动寻路插件A* Pathfinding

当你用Composite Collider 2D,里面的Geometry Type选Polygons的话,pathfinding生成的网格障碍物中间是障碍的,而选outlines,pathfinding生成的网格障碍物中间是空心的。

2021-07-15 15:28:12 509 1

原创 为什么要用命名空间using

本来命名空间是没什么用的,你也可以把所有class放一个默认命名空间,那为什么要命名空间呢?为了方便引用别人的东西。比如,你从别人那里拿了一个包来用,里面有非常多的脚本,假如里面有个脚本叫做move,而你这里也有一个脚本叫做move,假如他们都在一个默认命名空间下面,就重复了。所以,要用一个不一样的命名空间,这样拷贝就不会重复。...

2021-07-06 20:43:45 79

原创 C# class 类是什么东西?

class,类,就是一个类型,一个抽象。比如奔驰、宝马、丰田、本田,将他们抽象一下,就可以定义一个class类叫做“小汽车”。在往下追溯,宝马X1,X2,X3,X4,X5,这些型号,将他们抽象一下,就可以定义一个class类叫做“宝马”。在往上追溯,小汽车、公交车、消防车,将他们抽象一下,就可以定义一个class类叫做“车”。如此看来,根据颗粒度的不同,定义类是可以随意的,你只要找到一个共同特性,将他们关联起来,就可以定义一个类。但是,为什么要定义类呢?因为要抽象,要泛型。当我们写一个方

2021-06-26 10:17:06 1216

原创 unity ScriptableObject里面怎么序列化

[CreateAssetMenu(fileName = "NewBossList", menuName = "List/BossList")]public class BossList : ScriptableObject{ public List<OneBossInfo> bossList = new List<OneBossInfo>(); public OneBossInfo[] one;}[System.Serializable]public c

2021-06-20 21:51:30 357 2

原创 Unity C# 委托delegate和Event事件之间的关系

delegate本身是设定一个框架函数,没有方法实体,但可以给这个框架赋值,赋予它一个方法A,如果使用delegate时,就会调用方法A,如果delegatedelegate只有方法框架和返回值类型和参数,使用delegate时可以输入参数,也就是delegate是可以提供:方法框架和参数。但他缺少方法体。delegate需要找方法体delegate可以用=号给他赋值具体方法体,这样当delegate执行时,就完整了,有参数也有方法体。delegate也可以用+=号来增加具体方法体,这样,当d.

2021-06-19 11:33:16 355

原创 Unity C# 委托delegate

变量是程序在内存中为数据开辟的一块空间,面向对象语言中变量可以存放一个具体的数值,或者某个对象的引用。C#则在该基础上更进一步,使用Delegate的机制让存放“函数(Function)”成为可能。用“变量”类比“委托”//定义委托delegate double ParocessDelegate(double param1,double param2);//声明委托类型的变量ProcessDelegate process;//初始化委托变量process =new ProcessDeleg.

2021-06-19 10:20:56 200

原创 Unity ISerializationCallbackReceiver 序列化字典

public class SerializationCallbackScript : MonoBehaviour, ISerializationCallbackReceiver{ public List<int> _keys = new List<int> { 3, 4, 5 }; public List<string> _values = new List<string> { "I", "Love", "Unity" }; //U

2021-06-18 22:19:00 698 1

原创 C# Unity return后面写debug是没用的,要写在他前面

C# Unity return后面写debug是没用的,要写在他前面

2021-06-17 16:28:03 116 1

原创 unity if 里面的判断可以判断是否为null

private void OnTriggerEnter(Collider other) { var item = other.GetComponent<Item>(); if (item) { inventory.AddItem(item.item, 1); Destroy(other.gameObject); } }if里面的判断,可以判断item是否为空nu.

2021-06-17 14:51:15 1346

原创 C# this,Func,Static

static方法还不能使用this等关键字(this指的是当前的对象),因为它是属于整个类。Func中用this,然后就可以 使用主体.方法 这样使用了,因为this指代当前对象,也就是使用主体,就是实例化的对象。...

2021-06-16 17:22:21 129

原创 C# 委托,匿名函数,匿名委托,lambda,Action<>,Func<>,Predicate<>

c# 委托 delegateC#中的lambda表达式匿名委托是为了简化委托,简化了“初始化委托变量,将方法与委托关联起来”这个过程。lambda表达式是为了简化匿名委托。匿名委托和lambda表达式本身都是一个方法来的,但他们都没有名字,所以没法直接调用,要用就只能调用其委托。...

2021-06-16 11:12:51 282

原创 unity 技能系统

关于技能系统里面的skillData表,是用来填写数据的,但里面可能包含图片、音频、prefab实体等,怎么用数据表示?这时,就要写一个string和一个gameobject,这个string是用来填写的,比如string写为ballAttack,然后在用到这个skillData时,先进行一次初始化,用ballAttack这个名字去Resources.Load这个gameobject下来。这样做,就是将非数据的东西进行数据化,整张skillData表全是数据。...

2021-06-03 15:20:49 612 2

原创 unity3D Quaternion LookRotation FromToRotation

unity3D Quaternion LookRotation FromToRotation SetLookRotation方法LookRotation的含义就是,计算让Z轴对齐forward,让y轴对齐upward 所需要的旋转四元数。public static Quaternion LookRotation (Vector3 forward, Vector3 upwards= Vector3.up);其中,参数可以只填写Vector3 forward,就是只让正面(默认的正面是立方体(0,0,-

2021-05-28 20:11:28 277

原创 C# Delegate委托、Lambda表达式

Delegate委托的作用是什么,为什么需要委托?因为有一个问题要解决,我们写一个方法时,会设定一个参数,这样可以传入不同参数,而输出不同的值。但是,如果我们要写一个方法,该方法可以传入不同参数来调用三种不同的方法,当然,这个可以用switch来实现,但这样多一步,而且维护麻烦。为了解决这个问题,就引入了“方法参数”这个东西,就是把方法作为一个参数来传递。正常的方法的参数不能是方法的,所以就有了委托,来实现把方法作为参数这件事情。public delegate void SpeakLanguag.

2021-05-27 11:17:17 403

原创 Unity游戏设计中的UI和游戏体的关系

游戏中的UI和游戏体的关系比如精灵宝可梦,UI是一个方框,游戏体是各种精灵,其实,这些方框和精灵应该是一 一对应的,任何一个方框都能找到一个对应的精灵。也就是,在设计游戏时,要将UI和游戏体绑定设计出来,有一个游戏体就要给他一个对应的UI方框。给每个游戏体一个UI方框,是为了把游戏体背后的数据投射到UI上,呈现给玩家。如果一个游戏体没有UI方框,那么,这个游戏体背后的血量、攻击力等数值,玩家是没法知道的,唯有投射到UI上,才能显示出来。这就涉及到两个脚本,一个是playerInformation,一

2021-05-11 15:59:00 410

原创 Unity关于C#属性的理解

public class PlayerDeckVisual : MonoBehaviour { public AreaPosition owner; public float HeightOfOneCard = 0.012f; void Start() { CardsInDeck = GlobalSettings.Instance.Players[owner].deck.cards.Count; } private int cardsIn

2021-05-09 14:34:29 171

原创 Unity中对单例的使用理解

单例是在什么时候用?比如两个人的卡牌游戏,轮流的代码就可以用单例,因为单例有唯一性,就是不可能同时出现两个,就是不可能同时又轮到你又轮到我,应该是轮到我了,你就没了,轮到你了,我就没了。这时,就可以设定一个东西,大家轮流用,就是单例。...

2021-05-08 18:04:21 102

原创 C#中常量、静态变量、动态变量

常量,是不能改变的。静态变量是独一份,你赋值A,就是A,你再赋值B,就会变成B。动态变量是可以建立副本new实例的,可以有动态变量甲,乙,丙,丁,然后甲可以赋值A,就是A,你再赋值B,就会变成B,乙也可以。...

2021-05-05 16:18:50 877

原创 Unity中的Prefab Variant

prefab一共有三种形式:Prefab复制出来的Prefab1、Prefab2Prefab拖动到asset新建一个prefab3,选择original prefab方式新建Prefab拖动到asset新建一个prefab3,选择prefab variant方式新建第一种方式,这些prefab都是关联的,改动一个,其他全部关联改动。比如新建一个敌人做一个prefab,再复制两个敌人,这三个敌人就关联,改一个敌人,其他两个敌人跟着改动。第二种方式,prefab和prefab3是独立的,无关的。

2021-04-30 11:33:33 2801

空空如也

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

TA关注的人

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