![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity相关
文章平均质量分 60
烟雨迷离半世殇
战略转移到个人博客:lfzxb.top
展开
-
Unity打包篇:关于MMD模型贴画在安卓手机上无法显示的问题。
记录一下我把含有MMD模型的Unity导入Android软件后出现的问题和解决方法。首先MMD模型大多会有一个Root和一个其他的,不管那个Root,看下面那个,双击。右端会出现这些,点一下这个框框,把!!!!!全部都要换哦。!!!!!!!!Shader换成除了MMD开头的Shader之外的就ok了。在此我有一个问题,MMD的重力效果在APP上无效,望有知道的大佬告知,...原创 2018-03-26 19:21:22 · 2926 阅读 · 2 评论 -
Unity动画篇:浅谈Unity切换状态机动画。(Animator Controller和runtimeAnimatorController)
本博客内容确实非常浅显,也就是说很适合像我这样的初学者,日后会根据我的学习不断更新此文章。今天做红白机坦克大战项目,吃到五角星坦克会升级,这就涉及到Animator的动画切换。我看了Unity的官方文档。AnimatorOverrideController官方API说明,里面讲解的更加细致。我刚开始看不懂,慢慢琢磨才看懂一些皮毛。简而言之,动画的切换(不是单纯的同一角色的动画切换。)是依靠状态...原创 2018-06-13 12:05:08 · 25845 阅读 · 0 评论 -
Unity动画篇:解决Unity 状态机Animator鬼畜动画。
状态机的基础知识这里有位老哥讲的非常好https://blog.csdn.net/qq_34134078/article/details/53092653其实很简单,在逻辑上重置状态机就可以,看代码。private float v = 0;private float h = 0;private Animator m_Animator;void Start () { ...原创 2018-06-13 12:17:17 · 2347 阅读 · 0 评论 -
Unity基础篇:解决Unity里OnTriggerStay2D失灵问题。
我们先来看一下OnTriggerStay2D的官方文档。其大致意思为,对于进入Trigger里的物体,每帧都执行一次检测和逻辑代码。我们来做一个小Demo。意图使进入Trigger的物体生命值逐帧递减。挂载上相应的脚本和组件。NewBehaviourScript这样写using System.Collections;using System.Collecti...原创 2018-06-21 13:04:03 · 11034 阅读 · 5 评论 -
Unity打包篇:Unity 导出 Gradle 工程出现release builds have to be signed when using Gradle解决办法
方法来自https://blog.csdn.net/zx1091515459/article/details/78840379这位博主的文章,这里再做修葺.打包APK为Gradle是为了与Android Studio更好的交互,但是我却碰到了这个问题在网上一搜索,映入眼帘的就是上面提到的哪位老哥的解决办法,上面那句话的大意是用Gradle打包时必须要有签名(相信使用Android St...原创 2018-05-31 16:31:29 · 7375 阅读 · 3 评论 -
Unity打包篇:能够解决Unity打包Gradle遇到的所有问题方法整合!(持续更新中!)
大家自己的问题如果没有找到解决办法,请在下方留言,6小时之内绝对回复!1.首先是准备工作也是基础工作,下载JDK和SDK,安装的时候就直接点下一步,不要自定义路径,就让他放c盘,总共也没几个G,JDK和SDK的下载链接如下,JDK为1.8 171 版本.SDK为24.4.1版本JDKhttp://www.oracle.com/technetwork/cn/java/javase/dow...原创 2018-05-31 16:35:32 · 60329 阅读 · 38 评论 -
Unity基础篇:Unity中的世界坐标和局部坐标,Transform和Translate等问题的讨论。
今天感触良多,故于此一记。首先,对于世界坐标和局部坐标。这是两个cube,是我们今天的主角。首先是这个父Cube,我们注意到它此时坐标为(0,0,0),由于他在根目录,所以他的transform.position就是他的世界坐标。这里之所以用TransformDirection而不是Transformpoint,因为TransformPoint会受到其他因素的影响,可以去Unity...原创 2018-06-22 19:51:31 · 51106 阅读 · 11 评论 -
Unity基础篇:Unity使用鼠标拖动2D和3D物体。
/* 首先说一下,Input.mousePosition是鼠标所在像素平面内的坐标,需要根据自己的需求转变成世界坐标。 Description 描述 The current mouse position in pixel coordinates. (Read Only) 在屏幕坐标空间当前鼠标的位置(只读)。 The ...原创 2018-06-28 13:54:35 · 8831 阅读 · 0 评论 -
Unity动画篇:Unity实现控制动画的播放和暂停。
很简单,核心语句是Animator.speed=0.0f;原创 2018-07-23 19:20:14 · 27167 阅读 · 1 评论 -
Unity基础篇:Unity实现双击事件(奔跑,位移)。
有时候我们使用Unity设计游戏需要对游戏对象双击让他执行特殊操作,比如奔跑,位移之类的的。实现方法很简单,核心语句是if (Input.GetKeyDown(KeyCode.W)) { t2 = Time.realtimeSinceStartup; if (t2 - t1 < 0.2f) { ...原创 2018-07-14 21:48:21 · 5853 阅读 · 1 评论 -
Unity基础篇:Unity2D图集(1):Unity自动裁剪(Slice)图片无效的解决办法。
在设计2D游戏的时候,我们往往需要对一个图集进行剪裁来制作动画,但是,有时候Unity的Automatic Slice不能剪裁,得到的仍然是一张图片,而不是我们想要的一个个分割好的图集。举个例子。我想把这张图裁成一个个的小图,首先要把Inspector面板的Sprite模式选为Multiple,然后点击Sprite Editor我们点击Slice,可是他还是一张整图,我重装...原创 2018-07-15 20:26:04 · 13144 阅读 · 0 评论 -
Unity基础篇:Unity2D图集(2):将剪裁好的图片导出。
转载http://blog.csdn.net/hongyouwei/article/details/45011315,这位大佬讲的很好,但是他没有很好地考虑到我等小白的感受,故在此补充说明。1.在Unity的Project窗口下的Assets里面创建一个文件夹名字叫Editor。(注意,这里一定要是Editor,别问我为什么,我也不知道。)2.然后在里面创建一个脚本,名字随便,我这里取名为...原创 2018-07-15 20:48:03 · 3994 阅读 · 0 评论 -
Unity动画篇:Mecanim动画系统重点整合(获取当前正在播放的动画片段)
1.animator.GetCurrentAnimatorStateInfo(0);//参数是表示层级,返回的当前层级正在播放的动画的状态机(Base为0,New为1,以此类推)(如果要获取不受缩放影响的原始剪辑,可以用runtimeAnimatorController.animationClip或者GetCurrentAnimatorClipInfo,区别在于一个能取到全部,一个只能取到...原创 2018-07-31 20:09:52 · 7492 阅读 · 1 评论 -
Unity网络篇:NetworkServer is not active. Cannot spawn objects without an active server。解决办法
这个问题字面意思很明显了。NetworkServer未激活。在Unity 3D中,如果没有活动服务器,则无法生成对象。我总结了一下,原因有三个。一:没有完成服务器的创建。(一般都不会是这个错误。) 这时候我们需要创建服务器,可以用Network.InitializeServer或者组件又或者NetworkManager.StartServer来创建一个服务器。可以使用Netwo...原创 2018-08-14 22:05:09 · 3072 阅读 · 2 评论 -
Unity网络篇:Unet同步问题整合。
转载自https://www.cnblogs.com/xianunity/p/5646138.html,代码格式做了改进,增加了自己所理解的内容。首先要认清一点,Unet是服务器权威的。这在同步问题中很是重要。 状态同步是从服务器向客户端方向上的。本地客户端没有序列化的数据,因为它和服务器共享同一个场景。任何为本地客户端序列化的数据都是多余的。然而,SyncVar钩子函数会被本地客户端调...转载 2018-08-16 17:50:54 · 2828 阅读 · 0 评论 -
Unity基础篇:PlayerPrefs存储与读取数据。(键值对)
我们在开发游戏的时候不可避免的会遇到数据存储与读取的问题,今天给大家介绍一种方法,用Unity自带的PlayerPrefs来实现我们的目标。我们首先看一下PlayerPrefs的方法。本质就是键值对来存储数据。大概就是这么个情况...................下面是一个简单的Demo此Demo的完整版可至Siki学院搜索愤怒的小鸟来学习和获得。...原创 2018-08-30 21:45:35 · 11650 阅读 · 0 评论 -
Unity外传篇:给自己的VS2017设置背景图。(完整版教程)
先来一张效果图。简直不要太帅!1.2.这里要下载,我已经下载好了,所以直接显示了。3.下载好后重启VS20174..5.单击图片路径可选择图片。展示方式可选择单一模式(Single)和Slideshow(幻灯片模式)个人更喜欢单一模式。...原创 2018-08-30 21:53:11 · 919 阅读 · 4 评论 -
Unity基础篇:解决Unity自动Bake(Clustering)CPU内存占用过高问题。
今天打开一个项目Demo,然后就..............WTF???????????????????????????冷静分析,是自动Bake实时光照的锅。Windows——Lighting——Setting——ok ...原创 2018-08-31 17:53:31 · 8905 阅读 · 3 评论 -
Unity基础篇:解决Button触发高亮条件后一直保持高亮(HighteLighted )状态问题。
当我们把鼠标移动到Button上或者点击一个Button后会使他触发高亮状态。可是当我们鼠标离开时Button应当回到默认状态。可是事实并非如此。冷静分析,是导航导致,当你点击按钮一次之后会把焦点放在按钮上,所以点击完之后就是HighteLighted 状态。导航改成None就好了。...原创 2018-08-31 19:08:50 · 11026 阅读 · 7 评论 -
Unity基础篇:射线检测Physics.Raycast相关功能整合。
我们先看射线的相关文档。public static bool RayCast(Vector3 origin, Vector3 direction, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = ...原创 2018-09-08 18:43:43 · 14838 阅读 · 0 评论 -
Unity官方案例篇:Tanks Tutorial全解读(Tank移动)
PS:除了需要注意和重点学习的地方,其他过于基础的我不再赘述。(因为注释实在太详细了啊,魂淡!)史诗级注释了解一下?我们先来看Tank的移动控制脚本。遍历得到粒子系统子物体并播放利用玩家的标识来决定操纵者的按键。我们可以按下图顺序来查看Input Setting,并且可以根据自己的需求来更改。然后是坦克位置的改变。通过刚体来插值更新位置。...原创 2018-09-18 18:41:18 · 1519 阅读 · 1 评论 -
Unity基础篇: UGUI中的Slider,Scrollbar总结与区分。
Slider(滑动条):是一个主要用于形象的拖动以改变目标值的控件,他的最恰当应用是用来改变一个数值,最大值和最小值自定义,拖动滑块可在此之间改变,例如改变声音大小。Scrollbar(滚动条):是一个主要用于形象的拖动以改变目标比例的控件,他的最恰当应用是用来改变一个整体值变为他的指定百分比例,最大值1(100%),最小值0(0%),拖动滑块可在此之间改变。(例如查看txt文件时右边的滚...原创 2018-09-15 20:28:08 · 3383 阅读 · 0 评论 -
Unity基础篇:利用Scroll View快速创建可以上下左右拉动的文本框。
我在网上找了很多..........发现他们都是画蛇添足,Unity都给写好了,为什么还要自己花时间重新来一遍?每次都要自己造轮子岂不累死?好了,进入正题。Scroll View这是它的Inspector面板列表如果不需要左右滑动,Horizontal Scroll Bar也就可以去掉了,如果去掉的话记得禁用里面的Horizontal和Vertical,不然他还是会预留滚动条的...原创 2018-09-15 20:50:35 · 3563 阅读 · 1 评论 -
Unity官方案例篇:Tanks Tutorial全解读(坦克开火详解)
这次我们来看坦克的开火脚本。首先是辅助瞄准箭头Slider实现。对Slider不熟悉的小伙伴可以去看我写的这篇博客。https://blog.csdn.net/qq_15020543/article/details/82716854还可以把坦克的预制体放到场景里观察他的辅助瞄准箭头具体实现,学习一下。然后是开火,这段代码逻辑我改了一点点,效果实现的还可以。注意这里的...原创 2018-09-18 18:41:33 · 1429 阅读 · 0 评论 -
Unity基础篇:相机渲染问题整合
一、Canvas简介 Canvas画布是承载所有UI元素的区域。Canvas实际上是一个游戏对象上绑定了Canvas组件。所有的UI元素都必须是Canvas的自对象。如果场景中没有画布,那么我们创建任何一个UI元素,都会自动创建画布,并且将新元素置于其下。二、Canvas画布参数与应用1.创建画布 当你创建任何一个UI元素的时候,都会自动创建画布。也可以主动创建一张画布:点击G...原创 2018-09-10 19:17:41 · 16858 阅读 · 0 评论 -
Unity基础篇:解决特效显示在UI后面的问题。
我们在游戏开发中经常遇到特效不能正确地被渲染的问题。今天我就详细的说一下。在这篇博客里,相机渲染模式用的是Screen Space-Camera。不熟悉相机渲染相关的同学可以去看我的另一篇博客。https://blog.csdn.net/qq_15020543/article/details/82594332然后我们放入特效然后在特效的Inspector面板设置Order in L...原创 2018-09-10 19:29:33 · 15754 阅读 · 1 评论 -
Unity基础篇:使UI跟随屏幕分辨率变化自适应。
当我们使用Unity的UGUI设计游戏UI的时候,不得不考虑在不同分辨率机器下UI的缩放以及位置的自适应。今天我们就来讨论一下这个问题。首先我们来了解一下相机的渲染模式(这个蓝蓝的东西好像可以点唉)和Canvas下的Canvas Scaler一、Constant Pixel Size:像素大小始终不变,即一个100*100的图片在任何的分辨率下都占用100*100的像素。简单比较好理解...原创 2018-09-10 20:26:53 · 61365 阅读 · 5 评论 -
Unity官方案例篇:Tanks Tutorial全解读(坦克生命值)
这篇没什么好讲的,主要是颜色插值渐变这个API的使用。然后就是血条UI的改变,我们不应当让它随着坦克的转动而转动,这样会干扰我们的判断。我们让它始终与父物体的旋转四元数保持一致。...原创 2018-09-18 18:41:44 · 991 阅读 · 0 评论 -
Unity官方案例篇:Tanks Tutorial全解读(炮弹爆炸)
射线检测相关整合在这https://blog.csdn.net/qq_15020543/article/details/82531658(里面有laymask和queryTriggerInteraction以及layer的介绍) Physics.OverlapSphere 重叠球C# => public static Collider[] OverlapSphere(...原创 2018-09-18 18:41:51 · 1706 阅读 · 0 评论 -
Unity基础篇:Serializable总结与深入研究。
[HideInInspector]表示将原本显示在面板上的序列化值隐藏起来。 [SerializeField]表示将原本不会被序列化的私有变量和保护变量变成可以被序列化的,那么它们在下次读取的值就是你上次赋值的值。 1、如果a是公有的序列化变量。 (1)如果你想要在面板中看到变量a,那么用: public int a; ...转载 2018-09-18 17:57:38 · 21618 阅读 · 4 评论 -
Unity官方案例篇:Tanks Tutorial全解读(TankManager和GameManager)
对Serializable(序列化)有兴趣的小伙伴可以去看我这篇博客https://blog.csdn.net/qq_15020543/article/details/82761416这里的作用就是单纯的将信息序列化显示在Inspector面板上,方便赋值。转到GameManager脚本一目了然,不需要解释。如果去掉这句Serializable的话,就没得。这个...原创 2018-09-18 18:41:59 · 2951 阅读 · 0 评论 -
Unity官方案例篇:Tanks Tutorial全解读(相机控制)
这个相机控制我个人感觉比较难,所以会啰嗦一点,大虾勿喷。脚本挂在然后FixedUpdate里面有Move和Zoom两个函数,我们先看Move我们看39行的FindAveragePosition函数我们查找m_Targets的所有引用,发现它在GameManager被赋值,分别为坦克1和坦克2的值。averagePos是平均位置也就是两个坦克的中间位置,得出方...原创 2018-09-18 20:19:58 · 783 阅读 · 0 评论 -
基础知识篇:委托与事件
委托是对函数的封装,可以当做给方法的特征指定一个名称。而事件则是委托的一种特殊形式,当发生有意义的事的时候,事件对象 处理通知过程。注意1.委托是一种引用方法的类型。一旦为委托分配了方法,委托就与该方法具有完全相同的行为。2.事件是在发生其它类或对象关注的事情的时候,类或对象可通过事件通知他们。3.委托对象用delegate声明,事件对象用event声明。using Syst...原创 2018-09-25 08:59:34 · 713 阅读 · 0 评论 -
Unity官方案例篇:Tanks Tutorial全解读(UML图概括以及项目概述)
Tanks Tutorial是官方推出的教程系列的Demo,其中包含了粒子特效,协程,单例模式(严格来说算不上),相机动态移动,蓄力炮弹机制,环形生命条(Slider实现),阴影,UGUI等多种重点基础知识。值得大家学习。这是它的UML图,有位大佬告诉我经常画UML图对学习进步帮助非常大,今日一试,受益匪浅!这是游戏运行时的截图其实我玩了一下,可玩性还可以,就是控制有点别扭,需...原创 2018-09-18 18:41:08 · 1588 阅读 · 1 评论 -
Unity基础篇:协程(协同程序)的概括(StartCoroutine 和yield return和StopCoroutine )
MonoBehaviour.StartCoroutine 开始协同程序public Coroutine StartCoroutine(IEnumerator routine);一个协同程序在执行过程中,可以在任意位置使用yield语句。yield的返回值控制何时恢复协同程序向下执行。协同程序在对象自有帧执行过程中堪称优秀。协同程序在性能上没有更多的开销。StartCoroutine函数是立...原创 2018-09-14 14:42:39 · 42597 阅读 · 9 评论 -
Unity基础篇:四元数(Quaternion)和欧拉角(Eulerangle)讨论
四元数(Quaternion)和欧拉角(Eulerangle)这两个老朋友我们在游戏开发的时候会非常,非常频繁的使用他们。然而有时候我会混淆他们的定义以及用法,所以今天写一篇博客,来总结一下,夯实基础。1.首先我们还是要了解一下定义,这位大神写的非常好,非常专业,非常全面!请务必读完这位大神的文章再读此篇博客!https://blog.csdn.net/AndrewFan/article/...原创 2018-09-25 10:27:29 · 21194 阅读 · 0 评论 -
Unity实战篇:安卓游戏背景循环滚动的实现(分辨率自动适配)
今天我看了很多网上的背景图循环,表面上是可以的,可是分辨率一变,直接凉凉,所以我把这些方法结合一下,加以修改,就能完成背景自适应分辨率循环。在此记录,希望能帮到各位小伙伴。1.首先是相机渲染问题和UI自适应问题大家要先了解一下。方便理解后面的内容。https://blog.csdn.net/qq_15020543/article/details/82594332https://blog...原创 2018-10-01 15:12:05 · 1212 阅读 · 0 评论 -
Unity实战篇:移植游戏到安卓平台的注意事项及其实例(三)(FixBug,生命概念的引入和Audio优化)
由于我们重建项目的时候,并没有采用原项目那样的场景重载,所以生成敌人的那个协程就出了问题,每次再来一次游戏的时候,刚开始那段时间会出现大量的敌人,基本逃不过死亡的结局。所以我们要修改一下。我们在GameController里面创建对外的两个函数(StartIEnumerator和StopIEnumerator)来控制生成敌人的开始与结束。using UnityEngine;using ...原创 2018-10-02 14:27:36 · 759 阅读 · 0 评论 -
Unity优化篇:对象池的创建与使用。(简单且实用)
1.对象池是什么?对象池是一种Unity经常用到的内存管理服务,它的作用在于可以减少创建每个对象的系统开销。2.为什么要使用对象池?在Unity游戏开发的过程中经常会创建一些新的对象,如果数量较少还可以接受,如果创建的新对象数量庞大,那么对内存而言是一个极大的隐患。例如射击游戏当中,每发射一颗子弹,都要创建一个新的子弹对象,那么子弹是数量庞大,可想而知一场游戏当中会创建多少这样的新对象...原创 2018-10-03 20:14:03 · 7766 阅读 · 0 评论 -
Unity实战篇:移植游戏到安卓平台的注意事项及其实例(四)(玩家等级,对象池概念的引入以及优化)
1.对象池基础概念的了解(必看)https://blog.csdn.net/qq_15020543/article/details/829334792.引入玩家等级概念,根据玩家等级来升级子弹,针对项目来进行嵌入对象池对于玩家,我们需要多添加几个子弹发射位置。玩家等级和枚举类型皆由GameController控制using UnityEngine;...原创 2018-10-03 20:25:55 · 605 阅读 · 0 评论