U3D
FrogJJJJJ
这个作者很懒,什么都没留下…
展开
-
unity查找预制prefab和.asset上的missing引用
检查MissingReference资源原创 2023-01-06 11:39:01 · 679 阅读 · 0 评论 -
使用UnityHub打不开Unity
使用UnityHub打开Unity没反应,不弹出任何提示这个时候直接去打开对应版本的unity,别从hub打开,然后会提示你缺少什么文件,你把缺少的这些东西安装了就行原创 2022-03-04 09:39:23 · 5492 阅读 · 1 评论 -
ECS创建实体
ECS创建的实体无法显示,发现要加一个RenderBounds组件才能显示出来例子using System;using System.Collections;using System.Collections.Generic;using Unity.Entities;using Unity.Rendering;using Unity.Transforms;using UnityEngine;public class Test1 : MonoBehaviour{ public Ma原创 2022-02-22 11:59:22 · 215 阅读 · 0 评论 -
根据顶点创建Cube Sphere
using System;using System.Collections;using System.Collections.Generic;using System.Linq;using UnityEngine;public class CreateModelByVertices : MonoBehaviour{ public int _resolution; private GameObject _Root; private MeshData[] _meshDat原创 2022-02-17 17:29:06 · 220 阅读 · 0 评论 -
根据视野内物体的动态调整相机的拍摄范围
仅对2D游戏下的正交相机适用using UnityEngine;public class OrthogonalCamera2D : MonoBehaviour{ [Header("四周边框留白")] public float _buffer = 0; private Camera _cam; private void Awake() { _cam = GetComponent<Camera>(); } private原创 2022-02-16 17:34:30 · 3467 阅读 · 0 评论 -
在屏幕范围内随机生成物体
需要在当前视野范围内随机生成物体时使用,比如在屏幕上生成烟花等特效。。 /// <summary> /// 根据距离摄像机的位置得出平面范围 /// </summary> /// 0 1 /// 3 2 /// <param name="distance">平面与相机的距离</param> /// <param name="cam">相机</param> ///原创 2021-11-30 10:07:38 · 4465 阅读 · 2 评论 -
世界坐标转屏幕坐标 overlay模式下
在overlay模式下直接将屏幕坐标的值赋值给ui的世界坐标就行了 private void UpdateImgPos() { var position = transform.position; var camera = _cameraController.MainCamera; var screenPos = camera.WorldToScreenPoint(position); _rectTransImg.positi原创 2021-08-24 09:48:42 · 257 阅读 · 1 评论 -
关于坐标转换 ScreenToWorldPoint
当使用ScreenToWorldPoint(Vector3 position)进行坐标转换时如果z坐标的值为0或很小比如零点几,可能会导致得出的世界坐标错误,永远是相机的位置手动给z轴一个较大的值就行了,可以直接给Camera.farClipPlane例如uiCamera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, uiCamera.farClipPlane));...原创 2021-07-27 14:15:11 · 592 阅读 · 1 评论 -
使用LineRender实现画布功能
1.在Canvas下面创建一个Image作为画布2.给画布添加Collider2D,使用碰撞器检测画笔的进出3.创建一个空物体,挂上LineRenderer组件作为画笔画笔脚本using System.Collections;using System.Collections.Generic;using UnityEngine;[RequireComponent(typeof(LineRenderer))]public class DrawPen : MonoBehaviour{原创 2021-07-16 11:13:46 · 404 阅读 · 0 评论 -
物体跟随鼠标移动而旋转
想实现的效果:刀尖朝向Z轴正方向,刀刃朝向X轴正方向,使得刀刃的方向随鼠标移动而改变,鼠标向左移动刀刃向左,鼠标向上移动刀刃向上,鼠标向右上移动刀刃向右上,其他任何方向也一样思路:1.根据鼠标上一帧和当前帧的点得出鼠标的移动方向向量P2.获取刀刃方向3.两向量点乘得出旋转角度4.两向量叉乘得出旋转方向5.由当前Rotation 围绕旋转轴的指定方向旋转指定角度 得到新的Rotation,也就是,使刀从刀刃方向旋转到P方向6.记得使用插值,这样会旋转得比较平滑ps:附加刀绕着某个点移动的效原创 2021-07-01 12:02:43 · 388 阅读 · 0 评论 -
SkinnedMeshRenderer的切割问题
如果做刀剑类的游戏则会涉及到网格的切割推荐一个网格切割插件EzySlice用这个插件可以很方便的切割网格但是有一个问题,对应用了SkinnedMeshRenderer的模型无法切割解决方法:1.将SkinnedMeshRenderer中的网格烘焙,这是我们会得到一个mesh2.我们在模型的位置创建一个空物体,添加上MeshRenderer和MeshFilter组件,然后将所得的mesh和原模型的材质给这个新物体3.将原物体隐藏这样当我们要切割的时候创建一个新物体来切割,将原物体隐藏,效果看原创 2021-07-01 11:41:31 · 311 阅读 · 0 评论 -
使TrailRenderer 不受TimeScale影响
如果使用TimeScale控制游戏的慢镜头那么TrailRenderer会出现残留在屏幕上的时间过长的问题使用下面代码可以使TrailRenderer 不受TimeScale影响using System.Collections;using System.Collections.Generic;using UnityEngine;public class TrailRenderController : MonoBehaviour{ private TrailRenderer[] tra原创 2021-07-01 11:29:30 · 387 阅读 · 0 评论 -
OnCollisionEnter 无效 没有触发
测试了很久发现是isKinematic的问题如果两个物体的rigidbody的isKinematic参数都为True那么OnCollisionEnter 函数是不会触发的你取消其中一个的勾选就行了原创 2021-06-30 15:39:44 · 1918 阅读 · 0 评论 -
Animator 使用SetTrigger设置动画后自动切回别的动画
在使用Animator时遇到一个坑 就是使用SetTrigger的问题当你重复set一个状态比如SetTrigger(“A”) 做了两次然后你SetTrigger(“B”) 这时候 它可能会自动再切回A动画使用ReSetTrigger取消A的触发就能解决了可以在初始化的时候把激活的Trigger全部ReSet一遍代码如下 public void ResetAllTrigger() { AnimatorControllerParameter[] aps = an原创 2021-05-20 16:11:17 · 2674 阅读 · 1 评论 -
Xlua 导入Action
[CSharpCallLua] public static List<Type> CSharpCallLua = new List<Type> { typeof(UnityEngine.Events.UnityAction<bool>), typeof(System.Action<bool>) };原创 2021-05-11 09:14:56 · 500 阅读 · 0 评论 -
Xlua导入DoTween
在Xlua的ExampleConfig.cs脚本中加入[LuaCallCSharp] public static List<Type> mymodule_lua_call_cs_list = new List<Type>(){ typeof(DG.Tweening.AutoPlay), typeof(DG.Tweening.AxisConstraint), typeof(DG.原创 2021-05-11 09:14:23 · 541 阅读 · 0 评论 -
用UI表现3D物体是否超出边界的提示
public void Init(Transform target, Camera gameCamera = null) { _target = target; _gameCamera = gameCamera; } void UITipsPosCtrl() { if (_target == null) return; //世界坐标转视口坐标 var veiwPos = _gameCa...原创 2021-04-16 17:42:41 · 173 阅读 · 0 评论 -
设置ScrollView中content位置导致content会自动移动
当你进入ScrollView中需要充值content位置时如果直接设置content到0会导致content自动移动那把ScrollView的滑动模式改成Elastic就行了原创 2021-04-01 11:04:25 · 761 阅读 · 0 评论 -
从鼠标点击位置发射射线检测是否点击到3D世界中的物体
if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, 5000)) //如果碰撞检测到物体 { Debug.Lo...原创 2021-03-31 14:25:02 · 266 阅读 · 0 评论 -
关于加载AB中的资源
在ios平台上从StreamingAssets中加载AB包的时候要在路径前面加file://不然会报错哦原创 2021-03-31 14:07:21 · 187 阅读 · 0 评论 -
Unity 判断是否点击到某个按钮
private void Update() { if (Input.GetMouseButtonDown(0)) { if (EventSystem.current.currentSelectedGameObject == null || EventSystem.current.currentSelectedGameObject.name != "ButtonName") { De...原创 2021-03-23 15:05:18 · 4939 阅读 · 0 评论 -
RerderTexture 在手机上变黑 在电脑上正常显示
在ui上使用RenderTexture 渲染3D模型的时候该RenderTexture所在的面板实例化 必须在模型和渲染该RenderTexture的相机之前也就是说 UI上得先有RawImage 然后再有模型和渲染该模型的相机同时出现也可以但是RawImage所在UI面板不能再 模型和渲染该模型的相机之后实例化...原创 2021-03-19 10:37:15 · 1248 阅读 · 0 评论 -
关于RenderTexture中背景部分 不受Camera中SolidColor的透明度控制
今天在将模型渲染到UI上的时候,RanderTexture中的背景部分不受Camera中SolidColor的透明度控制导致无法去除背景色通过一段时间的排除,发现是渲染设置的问题打开ProjectSetting/Graphics1.将Tier Setting中的Use Default勾上,主要是要勾High那一栏的2.如果你不想勾Use Default 那就把Use HDR去掉3.如果你也不想去掉Use HDR 那就把HDR mode 改成FP16...原创 2021-03-09 11:32:57 · 1145 阅读 · 3 评论 -
Button 点击没有反应
原因:检查一下你是不是把button TargetGraphic目标翻转了180度因为UGUI的射线检测默认只检测正面解决办法:在你的button检测目标也就是 TargetGraphic目标上加个GraphicRayCaster组件,把IgnoreReversedGraphics取消勾选...原创 2021-03-08 16:45:21 · 1958 阅读 · 0 评论 -
简单刚体移动和转向
private void Move () { var MovementInputValue = Input.GetAxis (m_MovementAxisName); // Create a vector in the direction the tank is facing with a magnitude based on the input, speed and the time between frames. ...原创 2021-02-20 18:06:51 · 169 阅读 · 0 评论 -
AB资源加载出来材质丢失
首先确定你加载该资源的时候把他依赖的资源全都加载了如果加载了依赖仍然丢失,检查你选的是不是安卓平台,如果你选的是安卓平台,但是在编辑器下有可能测不出来,你要打包到安卓去测一下。亲测:在编辑器下材质丢失,但是在手机上没问题...原创 2021-02-05 10:56:13 · 509 阅读 · 0 评论 -
Xlua 使用中...
当我想对一个item类打hotfix想重写时,我先进行了这样的操作Lua_UITreasureChest = {}Lua_UITreasureChest.self = nilLua_UITreasureChest.data = nilxlua.hotfix( CS.UITreasureChest, "Lua_Awake", function(self) Lua_UITreasureChest.self = self end)然后我发现不管我怎原创 2021-01-29 16:34:10 · 132 阅读 · 0 评论 -
关于Animator播放动画的时鬼畜的那件事
背景:在一个场景中生成多个角色时,当角色的Idle动画时长大于每个角色生成间隔时,如果在生成角色时顺便绑定动画事件,并且这几个角色是同一个预制,换句话说,就是这几个角色用的是同一个状态机或者Idle动画,那么很可能导致第一个生成出来的角色播放Idle动画是鬼畜,表现就是Idle动画会在角色生成时从头播放,造成一卡一卡的现象。原因:动画事件的重新重复绑定所导致解决办法:第一种:动画事件全局只绑定一次,不要再每个角色生成时重复绑定第二种:绑定动画时过滤掉重复动画...原创 2021-01-13 10:02:32 · 201 阅读 · 0 评论 -
unity TextMeshPro不显示问题
TextMeshPro中的文本不显示,更改该组件上的任意参数后显示解决办法:检查该物体是否做了动画,如果做了动画且动画中scale从0开始这将从0开始改为从0.001开始原创 2021-01-05 15:30:47 · 4998 阅读 · 0 评论 -
Unity 角色慢动作
想实现角色慢动作仅仅修改TimeScale是不够的在修改TimeScale的同时还要修改Time.fixedDeltaTimeusing UnityEngine;public class Example : MonoBehaviour{ // Toggles the time scale between 1 and 0.7 // whenever the user hits the Fire1 button. private float fixedDeltaTime;原创 2020-12-30 16:01:02 · 1001 阅读 · 0 评论 -
世界物体坐标 转成 ui坐标
//先将世界物体坐标转换成视口坐标(相机是拍摄世界物体的相机) var veiwPos = Camera.main.WorldToViewportPoint(worldPos); //再将视口坐标转换成屏幕坐标(相机是拍摄UI的相机) var srceenPos = UIManager.Instance.uiCamera.ViewportToScreenPoint(veiwPos); //将屏幕坐...原创 2020-12-25 11:17:09 · 347 阅读 · 0 评论 -
unity 模型无法绕自身中心旋转
在控制模型旋转的时候,发现模型无法绕自身的中心点旋转可能是建模时候设置的点不对这个时候在你想旋转的物体外套一层空物体,然后旋转父物体就行了原创 2020-12-16 14:53:01 · 1639 阅读 · 0 评论 -
unity-shader Unity内置的函数变量等
光照篇环境光:在shader中://得到环境光部分fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz;自发光:漫反射:兰伯特光照模型:从公式可以看出,要计算漫反射需要知道4个参数:入射光线的颜色和强度 c light ,材质的漫反射系数 m diffuse ,表面法线n 以及光源方向l 。为了防止点积结果为负值,我们需要使用max操作,而Cg提供了这样的函数。在本例中,使用Cg的另一个函数可以达到同样的目的,即saturate函数。原创 2020-12-14 17:37:51 · 537 阅读 · 1 评论 -
Unity button image 背面无法点击
原因:因为忽略了背面的检测所以点击无效处理办法:**1.**去按钮在所在的Canvas上 把Graphic Raycaster组件的 Ignore Reversed Graphics属性去点勾选**2.**更好的办法是在你需要翻转的那个按钮上添加Graphic Raycaster组件 然后去点Ignore Reversed Graphics属性的勾选...原创 2020-12-02 11:52:14 · 467 阅读 · 0 评论 -
摇杆控制
ui方面关键就是将屏幕坐标转换为ui坐标要注意的是想摇杆中间的点在点击时保持正确位置就要将点和背景放在同一级目录下分别设置位置代码部分:void Update() { bool pressing; Vector2 pos; if (Application.isEditor) GetPressingInfoInEditor(out pressing, out pos); else原创 2020-12-01 12:14:13 · 487 阅读 · 0 评论 -
Unity Inspector 中的任何值被修改时
将会调用void OnValidate() { Debug.Log("OnValidate"); }原创 2020-11-27 13:52:43 · 1718 阅读 · 0 评论 -
unity 打包减小包体大小
使用Build Report Tool工具查看Used Assets信息看哪些资源占比比较大 对这些资源进行优化可优化资源1.图片找到那些比较大的图片在图片设置里调整它的大小保存后重新打图集2.字体去掉那些用不上的字体 不然它打进包里(去掉图片里的勾)推荐使用TMP 只要用TMP把字体图集打出来后就去可去掉该字体了...原创 2020-11-20 15:19:22 · 2442 阅读 · 0 评论 -
unity打包报错 Shader error in ‘Standard (Roughness setup)‘: undeclared identifier ‘RoughnessSetup_Refle
打开unity官方的shader UnityStandardCoreForwardSimple双击报的那个错误就能定位过去 或者去这个路径下找找Editor\Data\CGIncludes\UnityStandardCoreForwardSimple.cginc将这个文件第48行也就是half SpecularSetup_Reflectivity(){return SpecularStrength(_SpecColor.rgb);}的下面一行加入以下代码 half Roughn原创 2020-11-20 14:48:33 · 753 阅读 · 0 评论 -
不存在这个类或命名空间
如果你明明有这个类但仍然报这个错误去看看你这个类外面是不是套了什么宏比如套了#if UNITY_ANDROID ,但是你选择的平台是PC那就会报这种错误原创 2020-11-20 09:47:50 · 85 阅读 · 0 评论 -
Sprite 自由拉伸不变形
UI的Image在UI上的话就是与Image组件相关把image的显示方式改为切图模式也就是Sliced然后去SpriteEditor种编辑sprite的九宫格,九宫格的四个角在拉伸时是不会改变的直接拉上面的绿色的线就行了非ui的世界物体SpriteRenderer如果不是UI,但要显示Sprite的话,就要用SpriteRenderer了直接将SpriteRenderer的绘制模式改成Sliced将Sprite的MeshType属性改成Full Rect然后和上面一样去Spri原创 2020-11-02 18:34:28 · 1839 阅读 · 0 评论