2024-10-25 17:07:07
勇哥注:协程是字面意思,就是协作关系的代码。用过之后感觉跟C#的async await很像,也就是异步。但根据一些资料可以知道,对于脚本代码的执行,unity是使用的单线程的。因此它的这个协程并不是多线程,它究竟是个什么原理,是比较有意思的话题。协程的作用:任何的程序代码和逻辑处理都是按照顺序执行的。协程就是开启一段和主程序异步执行的逻辑处理。但是我们的代码并不是同时执行的。协程会通过我们不同的y...
2024-10-25 16:51:28
(一)鼠标与键盘 void Update()
{
if(Input.GetMouseButtonDown(0))
{
Debug.Log("鼠标左键按下");
}
if(Input.GetMouseButton(0))
{
Debug.Log("鼠标左键持续按下&q...
2024-10-25 11:48:31
勇哥注:unity中的Vector3可以表示向量、坐标、三元数,欧拉角等。这些东西是在应用组件Transform时必须的。(一)三元数Vector3 v=new Vector3(1,1,1);可以表示:向量,坐标,旋转,缩放v=Vector3.Zerov=Vector3.onev=Vector3.upv=Vector3.rightVector3 v2=Vector3.forward;//计算两个向...
2024-10-25 10:08:25
勇哥注:向量是unity里非常基础的一个概念,可以理解为跟3D物体的朝向有关。标量:只有大小的量,跟其它任何性质都没关系向量:即有大小又有方向的量 例如,你的学校在哪里? 回答:在你正前方100的地方。 这个答案就是类似向量的表示。 如果给他一个坐标位置,那这种就是标量的表示。 其它概念向量的模:就是向量的大小,舍去方向。 单位向量:大小,或者长度为1的向量。 向量的单位化,归一化: 因为向量的大...
2024-10-25 09:23:38
勇哥注:本节主要解决下面两个问题:这里的X,Y,Z是个什么单位呢?父物体子物体的父子关系是靠什么来维系的呢?Transform组件用来做位移、旋转、缩放。(一)Transform的单位在Unity中,一个对象的Transform组件的X方向数值代表的是在世界空间或本地空间中的位置或移动距离,其单位通常是米(m)。这并不是像素单位,而是Unity使用的三维空间中的标准度量单位。具体来说,Transf...
2024-10-24 20:23:11
勇哥注:UI是非常重要的内容,如果想做触摸屏效果,或者把unity变成软件界面来使用的话,这个是必须搞明白的。(一)UI的基础理论(1)如果要使用UI,场景中至少要有一个Canvas(画布),所有的UI组件都要成为它的子物体(2)另一个是EventSystem(事件系统),如果场景中没有,系统会自动跟你添加一个。(3)点击按钮,切换到2D视图,此时你看到了Canvas的大小,这个默认大小是跟据你的...
2024-10-24 20:16:22
把你的dll拷贝到Assets目录下Plugins目录下,如果Plugins不存在,则创建一个。然后去你的脚本中就可以使用这个dll了。此时unity会自动识别出这个dll,并且在你的vs编辑器的智能提示中,可以提示你自动引用相关的命名空间了。以上说的是调用.net framwork的dll。如果是其它的类型,请自行查阅资料。下图中,勇哥用这种方式就能成功引用EasyModubs的功能。...
2024-10-24 13:41:02
勇哥注:对于unity脚本之间的相互调用。FindObjectOfType这个应该是unity封闭的反射功能,它需要加缓存,否则影响速度。最常用的方式应该还是公共变量引用和静态方法调用。1. 通过公共变量引用你可以在一个脚本中定义一个公共变量来引用另一个脚本的实例。然后在Unity编辑器中手动将这个引用设置好。脚本A (ScriptA.cs):using UnityEngine;
p...
2024-10-24 09:33:50
勇哥注:本节说下unity的调试功能。(一)调试方法Debug.Log("test");Debug.LogWarning("test2");Debug.LogError("test3");//绘制线Debug.DrawLine(Vector3.Zero,Vector3.one);//绘制射线Debug.DrawRay(Vector3.ze...
2024-10-22 09:03:12
勇哥注:轴的移动很简单,就是Translate。整个XZ取放如果想自动连在一起运动,在协程里应用StartCoroutine进行顺序动作的定义即可。下面这个例子中,还用到了上节所讲的夹子代码。(图1)Safe Height Take Product Depth 取料时Z轴的深度Release Product Length 放料时的深度,因为是放到另一个拉带上,所以要单独控制深度。Releas...
2024-10-17 21:29:55
勇哥注:夹子的应用有我们常见的气缸。它的基本原理就是Fixed Joint 连接器。如下图所示,那个Cube添加Fixed Joint链接器后,配置好“已连接实体”,即可以实现链接。当你移动Cube时,球体会跟随移动下面构建夹子的简易演示,工程对象如下图所示:(图1)(图2)对base添加夹子脚本(图3)先在“场景”视图把夹子对象降下来。(图4)然后转到 “游戏”视图,按space键把夹子夹住球体...
2024-10-17 14:54:00
勇哥注:上料是指自动供料机构,例如震动盘,感应到就供一个料。其实就是通过触发器复制一个对象实例。(图1)代码:public class ProductFeeder : MonoBehaviour
{
public GameObject product;
bool available=true;
private void Start()
{...
2024-10-17 14:38:38
勇哥注:传送带代码比较简单,就是使用触发器移动对象。传送带构建场景时可以使用两个Cube(立方体),子级的Cube做为刚体,父级的Cube做为碰撞触发器(这里用的是Box Collider碰撞触发器)。要传送的那个Cube需要是个刚体,因此加了Rigidbody组件。Rigidbody组件和Box Collider碰撞触发器的详细说明见下面的文章:Unity组件大全之 Physics物理 |(57...
2024-10-16 16:01:21
Unity组件大全 | 目录索引 https://unityboy.blog.csdn.net/article/details/142187592Unity组件大全之 UI 组件 |(1)Text 文本组件https://unityboy.blog.csdn.net/article/details/142187174Unity组件大全之 UI 组件 |(2)Image 图像组件https://u...
2024-10-15 11:20:50
勇哥注:Unity这个高版本向下兼容没做好。有些低版本的场景,你最好下载对应的unity版本来打开,否则会有一些问题。但是unity hub又不允许你下载任意版本。怎么办呢?请参考下面的文章:使用UnityHub下载任意版本Unityhttps://blog.csdn.net/Mediary/article/details/104674350 这文章里说的第一种方式,有时候不灵,不知道为什么。第二...
2024-09-09 21:43:46
勇哥注:在工控领域,仿真是一个比较高大上的东西。可以把plc或者运控的设备控制过程,通过3D动画方式展示出来。这种方式对组态软件来说是降维打击,因为可以直接使用solidworks的3D图来进行仿真,而无需用一些平面控件来表示生产过程。最早的时候实现3d仿真是要自己写openGL来展示3D动画,如果需要碰撞等物理效果还得写物理系统,由于技术要求太高,所以很难实现。而现在则可以应用游戏引擎来轻松实现...