数字孪生项目遇到的问题2.0

遇到的问题:

1.使用别人的代码时出现类引用失败的问题(UnityEngine是可以正常引用的)

在这里插入图片描述
解决方法:

  • 删掉项目工程根目录下的.sln
  • 在这里插入图片描述
    应该是不同的电脑的不同的配置这些导致sln文件不同,可能会干扰到。
2.Moving Logs/AssetImportWorker 1.log to Logs/AssetImportWorker 1-prev.log: 另一个程序正在使用此文件,进程无法访问。

【解决】Moving Logs/AssetImportWorker 1.log to Logs/AssetImportWorker 1-prev.log: 另一个程序正在使用此文件,进程无法访问。

3.Unity太远的东西看不到,会看到天空盒。

解决方法:调整摄像机的Clipping Planes参数
在这里插入图片描述

4.射线检测不到

解决方法:添加碰撞体(但是可能会出现误触问题)
射线检测需要碰撞体(可以勾选为Trigger)

5.写入Excel中的时候老是出现莫名其妙的报错 有的文件可以有的不行

貌似是因为Excel有超链接的原因 读取不会有问题,但是写入会找不到对应的表

6.导入库的时候 下载dll文件放在uinty里然后使用 unity没有报错但是vs里面报错了

因为unity添加了引用而vs没有添加引用,不知道为什么unity依赖了vs但是没有完全依赖,

解决方法:
先选中这个
在这里插入图片描述
然后点击这个 开启那个引用那个选项
在这里插入图片描述
开启了之后添加引用
在这里插入图片描述
按照你导入的dll文件路径添加就行了
在这里插入图片描述

7.在使用Lambda表达式添加点击事件时绑定的循环变量全是最大值既(propertyTypeList.Count)

在这里插入图片描述
原因应该是该隐式函数函数对应的变量是该循环变量的位置,当触发的时候循环变量已经是数组最大值+1了(虽然临时变量被销毁,应该是调用该地址的变量导致该问题)

解决方法:使用全局的引用类型 或 把值类型变成应用类型

//-------------1.
       foreach (Toggle toggle in toggles)
            toggle.onValueChanged.AddListener( ()=> { VideoChange(toggle); });
//-------------2.
		//因为匿名函数不可以有值类型变量 要换成引用变量
		for(int i=0;i< toggles.Count; i++)
        {
			Toggle item = toggles[i];
			//添加点击事件
			toggles[i].onValueChanged.AddListener((isOn) => { print(item); });
		}

学到的知识:

  • TextAsset类可以用来读取项目中txt格式的文本内容,使用.text可以得到文本内容的字符串

  • yield return WWW:等待一个网络请求完成后从当前位置继续执行(C#协程的用法。

  • as 运算符类似于强制转换操作;但是,如果转换不可行,as 会返回 null 而不是引发异常。

  • typeof用于获取类型的 System.Type 对象。 配合Resources.Load(“路径”,Type) 文件路径和Type类型

  • ToString( string format ) format 是可选的格式化代码字符串。(【C#】ToString()参数中格式解析大全

  • UI中的一些简单的点击事件可以直接用代码添加写成匿名函数的形式,(一个bool 的参数传参就是他的SetActive,应该是?)

  • Mathf.Clamp public static float Clamp(float value, float min, float max);
    如果value处于min和max之间则返回value值,小于min则返回min值,大于max这返回max值

  • ref和out

    一个函数中,使用outref作为形参前的关键字,那么在函数体中只要修改过这个形参,之前调用这个函数时赋给对应形参的实参的值也会修改。它的机理就是,使用outref修饰的形参是引用类型(类似C语言里面的指针),而不是值类型,也就是说它们所存储的信息是地址,而不是值类型。

    refout
    区别要求变量必须在传递之前进行初始化(赋初值),但调用时可以对它什么也不做;而out 在调用之前,并不需要为这一形参的变量赋予初始值。只能用来将值从方法中传出。不管外界是什么值,使用了out是要把参数清空的,然后函数体中必须对其赋值。也就是说,在调用之时的函数体内部必须对out修饰的变量赋值。

    简单说就是ref有进有出(或无出),out无进有出。

    例子:c#中的关键字out是什么意思?ref是什么意思?它们有什么区别?

  • Image和RawImage的区别: Unity - UGUI :Image与RawImage

  • 可以通过自己写的Reset函数进行组件的快速配置 Unity 自带函数 Reset() 的使用

  • UI交互组件共有属性(可用于实现一些简单的动画):【Unity学习笔记】交互组件共有属性:Interactable、Transition、Navigation

  • 与场景中的物体进行交互,要给摄像机添加Physics Raycaster(在有EventSystem情况下),然后继承接口IPointerClickHandler,实现方法OnPointerClick,并在里面写点击到后的事件

  • 不同状态下的切换,可以利用相互冲突的点作为触发条件,可以让状态的切换更加顺畅。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值