unity开发遇到的问题和解决方法相关汇总

在开发游戏的过程中,总会遇到一些问题,但是解决了,没有记录解决方法,时间间隔又久,后面再遇到,又要趟一次坑…,所以先在这里记录一下,后面遇到就可以直接在这里来看解决方法了:

这篇文章是不定时更新的,遇到一次坑,更新一次。

ugui相关:

1.ugui锚点pivot和锚框anchor动态修改后,动态设置localPosition会出现实际坐标与设置坐标不一样的问题:

使用RectTransform的anchoredPosition设置坐标,使用sizeDelta设置大小就可以了

RectTransform rect = img.gameObject.GetComponent<RectTransform>();
rect.anchorMin = new Vector2(0, 0);
rect.anchorMax = new Vector2(0, 0);
rect.pivot = new Vector2(0, 0.5f);
rect.anchoredPosition = new Vector3(0, 64.5f);
rect.sizeDelta = new Vector2(80, 80);
2.ugui组件Toggle Group控制的Toggle,会有两个选中Ison=true

这个问题我才发现,代码可以设置Toggle的SetActive为false的Ison 的状态,但是如果Toggle Group控制的多个Toggle中,其中有Toggle 的SetActive为false状态时,Toggle Group就控制不了这个Toggle了。
如果使用for进行循环遍历Toggle,并查找其中Ison 为true的Toggle,那么可能你会找到多个Ison 为true的Toggle…
所有遍历时应该需要添加Toggle.gameObject.activeSelf == false进行过滤,不然就会逻辑出错

编辑器开发相关

1.删除GameObject时必须使用
GameObject.DestroyImmediate(gameobject, true)

方法才能删除组件,参数1:gameobject组件对象,参数2:是否允许销毁资源。
不能使用:GameObject.Destroy(gameobject),这个删除不了Editor模式下的资源

2.实例化对象:Instantiate

编辑器模式实例化对象无法保存,需要添加:EditorUtility.SetDirty(obj)方法

GameObject obj = GameObject.Instantiate(levelPrefab, levelNode.transform);
EditorUtility.SetDirty(obj);

unity组件相关

Light :

设置灯光阴影类型:(ps:并没有this.gameObject.GetComponent().shadowType的参数= =)

this.gameObject.GetComponent<Light>().shadows = LightShadows.Soft;

杂项:

1.部分手机会出现顶部黑边情况

手机可能是全面屏手机,需要在AndroidManifest.xml 添加:

<meta-data android:name="android.max_aspect" android:value="2.2"/>

参考:unity安卓如何适配全面屏?
Player Settings 窗口中的“Resolution and Presentation”选项卡来设置游戏的屏幕分辨率,以适配不同的显示设备。设置游戏窗口模式,并根据需要调整窗口大小和位置。一般设置参数:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/QO_GQ/article/details/130063610