这个理论就是之前看过的了。温故而知新。
一本透镜的书,翻译也太粗暴了,怀疑机翻。perspective,应该理解成观点吧,应该理解成一种理解观点之类的。
这本书应该现在有中文版的,回头去买一本。
这个理论就是之前看过的了。温故而知新。
一本透镜的书,翻译也太粗暴了,怀疑机翻。perspective,应该理解成观点吧,应该理解成一种理解观点之类的。
这本书应该现在有中文版的,回头去买一本。
获取麦克风
麦克风设备的长度大于0,则当前有识别到麦克风输入
Microphone.devices.Length>0
MicroPhone.devices[i]返回值是麦克风的名字
Microphone.Start(设备名,是否循环录制,录制生成的 AudioClip 的长度,录制生成的 AudioClip 的采样率)
Microphone.GetPosition(设备名) 获取在录制样本中的位置
AudioClip.GetData(float[] data, int offsetSamples)使用剪辑中的样本数据填充数组,返回值为-0.1f 到0.1f的浮点数组
点击保存按键后,清空线段
LineRenderer的Z轴都必须为0
pos/5,width/5
删除图片,同时删除Json文件
存储Json文件的名称和识别图名称保持一致
TrackerInfoData类,包含线段列表和元素物体列表
LineInfoData类,包含vector3列表,颜色,宽度
列表储存线,按下撤销则销毁最后的一段线,并在列表中移除
创建一个Image显示本地储存图片,隐藏拍摄面板
FilesManager添加方法,加载当前图片
拍照成功后,隐藏UI
AddTargetPanel拍照,识别图面板
拍照按键监听FilesManager中得StartTakePhoto方法
根据图片路径加载sprite
Sprite LoadSpriteByPath(string path)通过文件流读取路径中的图片,texture2D.LoadImage(字节缓存)加载图片,Sprite.Create(texture2D,new Rect(起始点,起始点,宽度,高度),new Vector2(中心点,中心点));
获取当前本地所有的识别图,结合Dictionary<string,string>GetAllImagesFiles(string path)获取路径和加载图片方法
Managers上挂载FilesManager,ImageTargetManager脚本
FilesManager脚本,StartTakePhoto方法,IEnumerator ImageCreate方法(储存当前拍摄的图片),Dictionary<string,string>GetAllImageFiles(string path)方法,ClearAllImageFiles方法
ImageTargetManager脚本,LoadTarget方法
进入绘画模式不能再拖拽道具
PropInfoData道具类,包含道具名称,位置,旋转,缩放
ImageTrackerFrameFilter中SimultaneousTargetNum控制可识别图的数量
将LineRenderer中UseWorldSpace取消勾选,不使用世界坐标
当有识别图正在识别时,发送一个事件
TargetController中,event Action TargetFound(找到已存在对象)和event Action TargetLost(未找到已存在对象)
在TargetListPanel面板需要禁用ImageTrackerFrameFilter脚本
检测是否点击到UI EventSystem.current.IsPointerOverGameObject()
根据传入的名字删除target,同时也需要删除字典中的路径和Sprite
ImageTargetItem,控制识别图管理对象逻辑
赋值Sprite图片,名字
在显示TargetListPanel时调用,传入图片和名字
加载所有图片,返回Dictionary<string,Sprite>
通过GetImageFiles()获取图片路径,遍历添加进字典,遍历需要约束非已存在的
每次显示TargetListPanel时加载所有图片,并实例化