unity错误提醒 报的什么错

1.在Dictionary迭代器进行修改:
var _key = index2factionDic.Keys.GetEnumerator();
while (_key.MoveNext())
item = index2factionDic[_key.Current];
if (item.Equals(id))
tempDelete.Add(_key.Current);
//index2factionDic.Remove(_key.Current);
}此时会报错:InvalidOperationException: out of sync报错原因:& & & &在迭代过程中,Dictionary 变量及Value是只读的,C#有保护机制,不允许在这个过程中修改这些变量。解决方案:& & & &创建一个列表List,来存储需要进行操作的key,然后在迭代器之外执行操作而不直接操作迭代器,便可解决报错问题:
List&int& tempDelete = new List&int&();
//Index发生变化,移除旧的索引
if (index2factionDic.ContainsValue(id))
var _key = index2factionDic.Keys.GetEnumerator();
while (_key.MoveNext())
item = index2factionDic[_key.Current];
if (item.Equals(id))
tempDelete.Add(_key.Current);
//index2factionDic.Remove(_key.Current);
for(int i = 0; i & tempDelete.C i++)
index2factionDic.Remove(tempDelete[i]);
tempDelete.Clear();2.UITable排序问题:& & & & 一般将Item添加到UITable的子节点上之后,给每个Item取名,这里假设是在一个List循环中进行添加的,取名根据循环指针i来取,例如:
//显示列表
for (int i = 0; i & cardlist.C i++)
nameStr = &card& +
Transform itemtrans = cardTable.transform.Find(nameStr);
if (itemtrans == null)
item = CreateOneCard(cardTable.transform);
item = itemtrans.gameO
item.SetActive(true);
item.name = nameS
}& & & & 记得勾选UITable排序的Sorted选项:& & & & 运行UITable.Reposition() 方法,会根据item的名称后面得序号来进行排序,但是有个问题,假如i大于10,如下图为生成后在Hierarchy中:& & & & 这里我一行显示5个Item,按照正常顺序应该如下:& & & & 结果出现了如下排序穿插:& & & & 原因:UITable在进行排序的时候,会从item命名字符串中取第一个数字来作为排序参考,所以“Card2”和“Card10”去到的第一个数字分别是“2”和“1”,所以“Card2”排到了“Card10”后面。& & & & 解决方案:命名小于10的item进行修改,“Card2”改成&Card02&,修改代码:
//显示列表
for (int i = 0; i & cardlist.C i++)
if (i & 10)
nameStr = &card0& +
nameStr = &card& +
Transform itemtrans = cardTable.transform.Find(nameStr);
if (itemtrans == null)
item = CreateOneCard(cardTable.transform);
item = itemtrans.gameO
item.SetActive(true);
item.name = nameS
}& & & & 如此,排序的问题就解决了。3.每次将预制拖到Hierachy窗口中就错:“NullReferenceException: Object reference not set to an instance of an objectPVPMatchPlayerScene..ctor ()UnityEditorInternal.InternalEditorUtility:HierarchyWindowDrag(HierarchyProperty, Boolean, HierarchyDropMode)UnityEditor.DockArea:OnGUI()”参考资料:报错原因:大致原因是同一个UI预制中,物理碰撞框的数量太多,所以导致绘制报错,但不会影响功能解决方案:对UI预制进行分割,减少单个Prefab的碰撞框数量,尽量降低UI预制的复杂度4.NGUI中,使用UILabel,假如在创建诸如聊天输出窗口或者展示窗口,希望超出设定区域的内容,以省略号代替,可以使用一下方式来完成,前提是当前的NGUI版本的UILabel提供了Wrap这个接口,教程:5.修改粒子特效染色的简单方法:
/// &summary&
/// 修改粒子特效染色
/// &/summary&
/// &param name=&gameObj&&&/param&
/// &param name=&color&&&/param&
public static void SetParticleSystemToColor(GameObject gameObj, Color color)
var partSyses = gameObj.GetComponentsInChildren&ParticleSystem&(true);
foreach (ParticleSystem _partSys in partSyses)
_partSys.startColor =
}6.修改Shader中的指定属性,例如Tint Color:通过以下代码获取Mesh Renderer组件,然后设置对应的属性:
MeshRenderer mesh_renders = gameObj.GetComponentsInChildren&MeshRenderer&();
mesh_renders.material.SetColor(&_TintColor&,selfcolor);7.在一个继承自MonoBehaviour的脚本中调用gameObject或者transform时,出现了如下错误:“ponent.get_transform()”或者“ponent.get_gameObject()”,可以先判断this是否为空再调用gameObject或者transform,如下:if (this == null || gameObject == null|| transform == null)
}8.用代码控制Unity编辑器的运行和暂停状态:运行:&UnityEditor.EditorApplication.isPlaying&= true;暂停:UnityEditor.EditorApplication.isPaused&= true;停止:UnityEditor.EditorApplication.isPlaying&=&false;
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:310792次
积分:4606
积分:4606
排名:第6640名
原创:152篇
转载:28篇
评论:179条
文章:10篇
阅读:13021
文章:16篇
阅读:22905
文章:16篇
阅读:14165
阅读:55224
文章:23篇
阅读:70982
阅读:10405
阅读:16677
(4)(9)(6)(8)(8)(9)(7)(5)(4)(8)(1)(1)(7)(12)(9)(9)(15)(31)(12)(1)(5)(10)(1)内存不兼容或其他硬件不兼容的问题。试一试使用NCRC命令跳过installer检查具体步骤如下:1、找到安装程序,右键创建快捷方式2、右键点击快捷方式,单击属性3、在目标栏中的目标后按一个空格后输入/NCRC,如下4、然后运行快捷方式就可以安装了如果成功进入安装程序,出现错误,说明文件损坏,则需要重新下载程序。
GDC 2015 游戏开发者大...unity编程环境的常见问题_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
unity编程环境的常见问题
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 unity错误提醒 的文章

 

随机推荐