Unity开发问题记录

  1. Assembly ‘Library/ScriptAssemblies/Assembly-CSharp.dll’ will not be loaded due to errors:

    从远程仓库拉取项目下来后有时会提示这个错误

    解决方法:

    1. 关闭电脑杀毒软件程序
    2. 打开项目Project Setting,Player,Assembly Version Validation取消勾选 ,然后运行游戏,结束运行后把Assembly Version Validation再次勾选即可
  2. Resources.load读取资源:

    • 从Assets/Resources文件夹下开始读资源,想要读取的资源要放到Resources文件夹下

    • 读取的文件不要加后缀

    • Load后的泛型写入文件类型

      1
      2
      //读取Assets/Resources/Image/player.png
      Sprite sprite = Resources.load<Sprite>("Image/player");
  3. 读取CSV行尾多出一个字符

    • 按换行符分割后,行尾可能会多出回车\r
    • Split('\r')将行尾的回车分割
  4. 在代码中修改ScriptableObject,重启Unity或重新编译代码后,SO中的属性变回默认值

    • 在代码中修改SO后,要将其保存

    • 修改SO后,标记其为脏数据,然后保存所有脏数据

    • //保存
      EditorUtility.SetDirty(monster); //标记为脏数据
      AssetDatabase.SaveAssetIfDirty(monster); //保存脏数据到磁盘
      AssetDatabase.Refresh(); //刷新数据库
      
  5. C#中string的默认值为null

  6. OnGUI一帧会执行多次。

    • 当使用GUILayout.BeginArea绘制时,在Event.current.type为layout的时候Rect还没确定,GetLastRect返回的是(0,0)的Rect。
    • 在Event.current.type为repaint的时候,Rect才真正确定,GetLastRect返回的是正确的值。