202104-27 解决unity rotate旋转物体 限制物体旋转角度的大坑 今天可是遇到一个很简单的需求,但是却让我蛋疼了半天。滑动屏幕控制物体旋转,但是旋转的角度要在-60到60之间。乍一听这简直是小儿科啊。判断一下角度不就行了。相比这四元数,欧拉角虽然有时会出现万向锁,但是简洁明了啊。这不,我就中了一个简洁明了的大坑。图中,如果你以为transform.eulerAngles=(-1,0,90)那就大错特错了。因为对于旋转来说。360度是一个循环。-1°也可以算是就是359°而且unity就是这样认为的。面板上虽... 继续阅读 >
202104-27 unity AudioSource播放完声音后要执行的函数或条件操作 将脚本挂在要判断声音是否播放完毕的物体上usingSystem.Collections;usingUnityEngine;usingUnityEngine.Events;[RequireComponent(typeof(AudioSource))]publicclassAudioManager:MonoBehaviour{publicstaticAudioManagerinstence=null;privateAudioSource_audio;voidAwake(){if(instence==null){instence=this;}}voidStart(){_audio=GetComponent<AudioSource>();}voidUpdate(){//按下键盘按钮A键... 继续阅读 >
202104-27 unity 实现摄像机绕某点旋转一周 在Update函数中执行:if(turnAround){playerCamera.RotateAround(transform.localPosition,transform.up,Time.deltaTime*rotateSpeed);degree+=Time.deltaTime*rotateSpeed;if(degree>=360){turnAround=false;degree=0;}}补充:unity摄像机围绕某个物体进行旋转放大缩小脚本通过以一个物体为中心点来控制摄像机围绕物体旋转缩放,脚本挂在摄像机上即可,target是... 继续阅读 >
202104-27 unity 如何使用LineRenderer 动态划线 我就废话不多说了,大家还是直接看代码吧~privateLineRendererline1;//画线line1=this.gameObject.AddComponent<LineRenderer>();//只有设置了材质setColor才有作用line1.material=newMaterial(Shader.Find("Particles/Additive"));line1.SetVertexCount(2);//设置两点line1.SetColors(Color.yellow,Color.red);//设置直线颜色line1.SetWidth(5f,10f);//设置直线宽度//设置指示线的起点和终点line1.SetPo... 继续阅读 >
202104-27 Unity 通过LineRenderer绘制两点之间的直线操作 我就废话不多说了,大家还是直接看代码吧~privateLineRendererline;//画线line=this.gameObject.AddComponent<LineRenderer>();//只有设置了材质setColor才有作用line.material=newMaterial(Shader.Find("Particles/Additive"));line.SetVertexCount(2);//设置两点line.SetColors(Color.yellow,Color.red);//设置直线颜色line.SetWidth(0.01f,0.01f);//设置直线宽度//设置指示线的起点和终点line.SetPosition(0,initPo... 继续阅读 >
202104-27 Unity 实现给物体替换材质球 下面先看一下效果图usingUnityEngine;usingSystem.Collections;publicclasstextMesh:MonoBehaviour{publicMaterialmeshRender=null;publicRendererrend;publicTexturetexture;voidStart(){//把名字为bangongshi4的材质球放到Resources文件夹下meshRender=Resources.Load("bangongshi4")asMaterial;if(meshRender==null){Debug.Log("111111111... 继续阅读 >
202104-27 基于Unity Line Renderer组件的常用属性说明 LineRenderer(线条渲染器)这个组件可以在场景中渲染出"线",比如说:做出手枪瞄准敌人时有红外线的射击辅助线,可以用LineRenderer来完成不过这个组件对新手还是有些不友好的,看到下面的属性就头大,不过掌握了基本用法之后就没什么难度了,下面讲解一下属性(我用的Unity是2018.3.8版)首先看一下Positions属性这是画线的核心俩点(或多个点)连一线,一个物体只能带有一个LineRenderer组件,一个LineRenderer组件只能渲染一条连续的线Size... 继续阅读 >
202104-27 unity 鼠标悬停事件操作 笔者在网上发现了,很多种方法,当然咱们找最好用的,也简单的下面废话不多说直接上代码我在??录妇第一这个脚本挂在需要相应的游戏体上第二被挂游戏体必须带有collider,第三仅仅制作完上面的两步本应该没有问题,笔者又发现一个问题就是只有鼠标在物体的右上方才会很灵敏的相应到在在左下方反而没什么反应,为此笔者在脚本上加上了一句this.GetComponent<BoxCollider>().size=newVector3(1.5f,1.5f,1.5f);原来物体的si... 继续阅读 >
202104-27 unity实现鼠标经过时ui及物体的变色操作 1、实现UI的变色设置HighlightedColor为鼠标经过时变的颜色(Normal为常态,Pressed为按下时的颜色,Disabled为禁止的颜色)2、通过代码实现物体的颜色改变usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassCube_change:MonoBehaviour{privateColorCubeColor;privateTextureCubeTexture;publicGameObjectobjCube;//UsethisforinitializationvoidStart()... 继续阅读 >
202104-27 Unity 从Resources中动态加载Sprite图片的操作 我就废话不多说了,大家还是直接看代码吧~publicSpriteLoadSourceSprite(stringrelativePath){//Debug.Log("relativePath="+relativePath);//把资源加载到内存中ObjectPreb=Resources.Load(relativePath,typeof(Sprite));Spritetmpsprite=null;try{tmpsprite=Instantiate(Preb)asSprite;}catch(System.Exceptionex)... 继续阅读 >
202104-27 Unity实现简单换装系统 关于Unity的换装,网上有几篇文章,我之前也简单的描述过实现。不过那个时候只是粗略的试验了下。今天好好梳理了下代码。先上代码(自己的游戏项目,不是公司的,所以放心的贴上项目代码了,部分引用到其他的功能文件,但是核心代码无影响,这里主要看一下细节和思路)usingUnityEngine;usingSystem.Collections;usingSystem.Collections.Generic;publicenumAvatarPart{helmet,chest,shoulders,gloves,b... 继续阅读 >
202104-27 Unity实现换装系统 Unity如何实现换装系统,供大家参考,具体内容如下1.创建SpriteLibraryAsset2.添加新目录Label可以理解为标签,在代码调用过程中使用,将该部位装备图片拖入Sprite中3.添加组件给需要换装的部位添加SpriteResolver组件(如头部换装,就在头部对象挂载组件)选择目录名,就会出现之前LibraryAsset中拖拽的图片内容,点击不同图片可以预览效果(如果出现装备位置偏移,需调整图片的pivot)4.通过代码实现换装小笔记:1).UnityE... 继续阅读 >
202104-27 Unity 实现鼠标滑过UI时触发动画的操作 在有些需求中会遇到,当鼠标滑过某个UI物体上方时,为了提醒用户该物体是可以交互时,我们需要添加一个动效和提示音。这样可以提高产品的体验感。解决方案1、给需要有动画的物体制作相应的Animation动画。(相同动效可以使用同一动画复用)2、给需要有动画的物体添加脚本。脚本如下:usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.EventSystems;publicclassOnBt... 继续阅读 >
202104-27 unity 鼠标移入弹出UI的操作 外部调用show和Hide方法usingDG.Tweening;usingUnityEngine;usingUnityEngine.UI;publicclassShowInfo:MonoBehaviour{privatebool_isshowing=false;publicCanvasCanvas;//UsethisforinitializationvoidStart(){Hide();}//UpdateiscalledonceperframevoidUpdate(){}publicvoidHide(){transform.DOScale(Vector3.zero,0.3f);... 继续阅读 >
202104-27 Unity 如何设定 Animator分割播放 项目有个需求,一整段非常长的Animator动画,分割成一份份的播放,我们点击相应的按钮就播放某个时间点的动画,废话不多说新建一个空物体加上togglegroup,下面是一堆的toggle并在Group里加上父亲privateAnimatormyAnimator;publicList<Toggle>myTogglesList;privatefloatplayTime;publicvoidAwake(){myAnimator=GameObject.Find("XXX/xxx").GetComponent<Animator>();myTogglesLis... 继续阅读 >
202104-27 unity 如何判断鼠标是否在哪个UI上(两种方法) 第一种可以得到UI,再根据名字判断是不是自己自己要点击的UI其中参数canvas拖入此UI的canvas///<summary>///获取鼠标停留处UI///</summary>///<paramname="canvas"></param>///<returns></returns>publicGameObjectGetOverUI(GameObjectcanvas){PointerEventDatapointerEventData=newPointerEventData(EventSystem.current);pointerEventD... 继续阅读 >