概念和操作
- GameObject是游戏中的实体,用来捆绑脚本,实现交互;在Unity中,public成员变量和带[SerializeField]标签的非public成员变量,可以在Unity界面中通过输入和拖拽的方式赋值和获取对象。Hierarchy包含了当前场景中的所有游戏对象GameObject。
- prefab预制体是一种资源类型,是存储在项目视图当中的可反复使用的游戏对象,可反复使用是它的特点。;
- 预制体的创建:在Hierarchy面板创建一个游戏对象(比如cube)作为模板,拖动到Project中就成为了prefab资源;
- 齿轮图标是因为命名为“gamemanager”,Unity会自动把脚本变为齿轮图标,但是不影响它的使用。;
- goedle.io是一个使用机器学习进行预测的Unity跟踪SDK。Unity 跟踪SDK将数据传输到goedle.io结构中,它会将机器学习算法应用于数据,计算出用户流失或高风险学生的概率,并调整游戏和学习策略,实现应用程序的动态难度调整。使用说明:https://github.com/goedleIO/sdk_unity/blob/master/README.MD.
- DontDestroyOnLoad: 加载新的Scene时,请勿销毁Object。因为加载新的Scene会销毁所有的Scene对象。;
- 枚举的定义:enum week {Monday,Tuesday,Wednesday} 声明好后,就可以像使用其他数据类型一样使用它们,week a=week.Monday;;
- 序列化就是将对象转换为容易传输的格式的过程,一般情况下转化为流文件,放入内存或者IO文件中。类的序列化最简单的方法是使用[Serializable]属性对它进行标记;
- #region properties 是C#预处理指令,指定可展开或折叠的代码块。#endregion;
- Unity中要 避免使用构造函数,不要在构造函数中初始化任何变量,使用Awake或Start实现,因为MonoBehaviour有两个生命周期,一个作为C#对象的周期(调用构造函数),一个作为Component的周期(Awake),构造函数不仅会在无法预料的时刻被调用,它也会为预设或未**的游戏物体调用…和其他一些原因。但是分子实验室的Molecule.cs使用了构造函数对变量进行了初始化?
- List 和string[]都可用于字符串存储。如果采用list,对象的长度是可变的;如果采用数组,当数组元素发生变化时,系统会重新初始化数组;所以当存在大量插入操作时,使用List。List查找用遍历的方式获取数据;而数组除了遍历,还可以用小标的方式访问数组中的元素;所以当使用大量查找操作的时候,使用string[]。
- 按钮点击Untiy 3D EventSystem:https://www.jianshu.com/p/ae332979a022.
- transform组件的用途(1)维护场景树(在Hierarchy视图中显示的内容)(2)对3D物体平移旋转缩放 。
- 每一个继承自MonoBehavior的组件都有一个数据成员gameObject指向游戏对象,transform组件也有个gameOject指向游戏对象。而且游戏对象的每个组件都有一个数据成员transform指向transform组件。访问游戏对象:https://www.cnblogs.com/hangzhe/p/6822698.html.
- 拖动游戏物体的案例:https://blog.csdn.net/eazey_wj/article/details/69788909.
- Queue中.Peek()函数返回队列头元素不删除,.Dequeue()返回队列头元素,删除,.Enqueue(a)将a元素添加到队列末尾。
- RectTransform是UI对象的组件,它的Anchor数据成员定义父物体和子物体的联系,因为unity中的UI对象有严格的父子关系。
- 锚点:AnchorsMin和AnchorsMax值一样,是绝对布局。
锚框:AnchorsMin和AnchorsMax不一样,是相对布局
分子实验室案例
- 从Menu场景开始运行,从login场景开始会报错。
- MoleculeController提供了根据分子名称找分子类、返回当前strategy中的分子类,返回strategy下一个分子类的方法,实验1和实验2都可以使用。
- ContentAdaptationManager就是调用了MoleculeController中的返回当前分子类和下一个分子类的方法。
- 按钮点击的委托事件 https://www.cnblogs.com/cxy-610312340/p/5220593.html.
- ContentAdaptation用了按钮委托,但是没太看懂,监听器在哪?便捷的地方在哪?再看看其他脚本。
- 脚本中使用了AudioSource音源组件,它像一个喇叭,播放着音频片段(Audio Clip)。
- SoundManager也是创建一个单例,并不随场景切换持久存在。
UI界面
- MainCamera的Projection改为Orthographic 正交无透视;
- 将相机所投射获取到的界面当做UI界面时,新建Canvas, RenderMode改为ScreenSpace-Camera,将MainCamera拖入Render Camera, Additional ShaderChannel 选择TexCoord1,Normal,Tangent。UIScaleMode选择ScaleWithScreenSize。ReferenceResolution选择1336和768。Match选择0.5;
- 背景图片:canvas下新建一个ImageUI游戏对象,sourceImage加入图片,调整大小位置即可。
- 增加按钮和文字。
- 为按钮添加场景转换:编写SceneLoad脚本,新建游戏对象挂载SceneLoad脚本,将游戏对象拖拽到Button的OnClick{}面板下,选择函数。
环境问题
1.服务器上的Unity 右键加Alt不能移动场景。解决:Ubuntu禁用系统快捷键Alt+右键。 https://blog.csdn.net/chousha1886/article/details/100746885.
2.Net是Microsoft推出的多语言开发平台,这个平台上可以运行Visual studio,visual studio 可以支持很多语言C#。可以类比于地皮、房子、人。人使用建在地皮上的房子。Mono支持在其他操作系统下开发.NET程序的框架,Unity借助Mono实现跨平台,核心是.NET Framework框架。
3. !Ubuntu下安装Unity的编辑环境VisualStudio, .NetSDK,Mono: https://tedliou.com/archives/howto-install-vscode-for-unity-on-ubuntu2004/.
*