一些报错:

1.  Program.cs(4, 2): [CS1032] 不能在文件的第一个标记之后定义或取消定义预处理器符号 :#define 和 #undef预处理器指令 必须用在程序的最开头(最上面),并且在其他任何关键字之前,例如用在命名空间声明中的那些指令之前。

2.  System.ArgumentOutOfRangeException Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index  (系统.argumentoutofraneexception:索引超出范围。必须非负且小于集合的大小。) ;索引位置越界。

3.  InvalidCastException:Specified cast is not valid :指定的强制转换无效

例子:
uint _curSubTemplateID;

questGuideTrackData.SaveRecord(1, _curSubTemplateID); //在参数传递时不进行类型装换会报错  InvalidCastException:Specified cast is not valid
questGuideTrackData.SaveRecord(1, (int)_curSubTemplateID); //在参数传递时就进行类型装换不会报错

public readonly Dictionary<string, int> DicIsTrack = new Dictionary<string, int> { { OnlyOneKey, 1 } }; 
public int _CurTrackingQuestID; public void SaveRecord(params object[] param)
{
   if (param == null || param.Length < 2)return;
    DicIsTrack[OnlyOneKey] = Convert.ToInt32(param[0]);
   _CurTrackingQuestID   = Convert.ToInt32(param[1]);
} 

4.Indexer access returns temporary value.Cannot modify struct member accessed struct is not classified as a variable(Indexer访问返回临时值。不能修改已访问的结构体成员,结构体未被归类为变量,需要定义一个变量用于存储indexer返回的临时值。不能直接更改临时值)

例子:
public static List<(int id,bool isGotReward)> BattlePassRewardStatidIdList { get; set; }
BattleSeason.BattlePassRewardStatidIdList[0].isGotReward = false;//报错:Indexer access returns temporary value.Cannot modify struct member accessed struct is not classified as a variable

修改:

bool isGot = BattleSeason.BattlePassRewardStatidIdList[currWeekIndex].isGotReward;
isGot = false;
BattleSeason.BattlePassRewardStatidIdList[currWeekIndex] = (1, isGot);  

5.cannot convert from 'System.index' to 'int'(Unity引擎报错,但编译器没有报错)



3.Unity报错:Setting the parent of a transform which resides in a Prefab Asset is disabled to prevent data corruption

翻译:设置位于预制资产中的转换的父元素是禁用的,以防止数据损坏
原因:只加载了预制件就开始对其进行相关操作,但是并没有进行实例化。
解决方法:将加载出来后的预制件进行实例化后再对其进行操作。
public GameObject ItemPrefab;

GameObject itemPrefabs = GameObject.Instantiate(ItemPrefab);
itemPrefabs.transform.parent = transform;
itemPrefabs.transform.localPosition = Vector3.zero;

4.unity Trying to add ChatTypeBg (UnityEngine.UI.Image) for graphic rebuild while we are already inside a graphic rebuild loop. This is not supported.

当我们已经处于图形重建循环中时,尝试添加ChatTypeBg (UnityEngine.UI.Image)用于图形重建。这是不支持的。
出现情况:在继承自Text的类中的OnPopulateMesh函数中对一个图片的大小进行赋值。
原因:当Unity正在处理图形重建时,不允许修改UI元素;所以你应该过一段时间再做这些操作。你可以使用 (协程)StartCoroutine ,它保证在图形重建之前的下一帧运行你的代码。但是你必须把你的代码写在yield关键字之后(因为yield关键字之前的代码会在这一帧中立即运行,与图形重建冲突)。 Unity只能在主线程上更新用户界面。

5.协程启动时发生的报错


6.IDEA报错:Cannot connect to already running IDE instance. Exception: Process 3,200 is still running

翻译:无法连接到已运行的IDE实例。异常:进程3200仍在运行
直接打开任务管理器查找PID 为3200的进程并结束掉。

7.在执行git rebase过程中报错;报错内容:error: could not read '.git/rebase-apply/head-name': No such file or directory

在rebase过程中中断rebase后继续或跳过rebase时报错。
解决方法:使用一下语句:移除rebase产生的中间文件后再重新进行rebase
rm -fr ".git/rebase-apply"
或者直接删除.git/rebase-apply文件夹。

8.Unity报错:Invalid AABB inAABB

出现报错的原因: 尝试将NaN值(0除以0得到NaN值)赋值给某个Transform。
解决方法:避免出现0除以0的情况。或者使用判断某个值是否是NaN来取消赋值(float.IsNaN/double.IsNaN)

9.GUI Error: You are pushing more GUIClips than you are popping. Make sure they are balanced.

出现这种问题是因为GUIClips的开始和结束没有一一对应,比如有一个  GUILayout.BeginHorizontal();而后面又没有  GUILayout.EndHorizontal();与之对应 ,就会报以上错误。

10.数组排序时的报错:System.InvalidOperationException: Failed to compare two elements in the array.

出现问题的原因:排序时仅考虑的大于和小于的情况,没有考虑等于的情况。
解决:加上等于的情况。

11.System.FormatException:Format specifier was invalid (格式说明符无效)

使用Tostring((string? format, IFormatProvider? provider))做字符串格式转换时的报错,具体原因为 format无效或不受支持。

Bug


1.Button 点击相应两次事件
解决方法:ProjectSettings -> Input -> Axes -> Submit(提交) -> Positive Button 里的 mouse 0 (也许是别的按键) 删掉

2.关于打包中的图片显示瑕疵但是在编辑其中无显示瑕疵

包中:

编辑器中:


主要原因:在生成的图集中对目标精灵获取纹理时切割到了其他精灵的纹理:
解决方法:不要勾选Tight Packing(紧凑打包),并尽量调整大的Padding。
调整后:


3.有关浮点数的精度问题



Mathf.CeilToInt() 与 (int)Math.Ceiling() :输入相同的值,但输出的值不同;当在不同地方对同一功能进行取整操作时,最好使用同一方法。

4.包中图片资源丢失