2024 09 05, 2018 今日內容
2024-09-05, 20:18-今日內容
GameObject enemyWaveList[] ; 这样写不是初始化吗 Drag在unity里面事模仿空气阻力,来让物体运动的越来越慢的。 Game view是最终看到的游戏画面,scene view 可以看2D 3D Awake 在unity 是啥意思。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
GameObject enemyWaveList[] ; 这样写不是初始化吗
不是。 Csharp需要我们声明 并未initialize 他。 在 C# 中,GameObject enemyWaveList[]; 这实际上只是声明了一个数组,但并没有对其进行初始化。仅仅写 GameObject enemyWaveList[]; 并不会为数组分配内存空间或者为其分配元素。
声明 vs 初始化
-
声明:
GameObject enemyWaveList[];只是告诉编译器你打算定义一个GameObject类型的数组,但此时该数组并没有实际分配内存。 -
初始化:初始化意味着为数组分配内存,并定义其大小。例如:
enemyWaveList = new GameObject[enemiesToSpawn];这一步确保了数组能够存储
enemiesToSpawn个GameObject元素。
正确的初始化方法
在你的代码中,应该在使用数组之前先初始化它,以便为每个元素分配存储空间。像这样:
GameObject[] enemyWaveList = new GameObject[enemiesToSpawn];
这样,enemyWaveList 就被分配了一个长度为 enemiesToSpawn 的数组,并且可以用来存储生成的敌人实例。如果不初始化数组,尝试访问数组元素(如 enemyWaveList[i])将导致运行时错误。
进一步优化
如果你不需要存储每个生成的敌人对象,可以考虑直接使用 Instantiate 来生成敌人,而不将它们存储在数组中。如果你需要存储这些对象以便稍后访问或修改,则使用数组是正确的选择。
总结:GameObject enemyWaveList[]; 是数组的声明,而 new GameObject[size]; 是初始化数组的过程。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Drag在unity里面事模仿空气阻力,来让物体运动的越来越慢的。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Game view是最终看到的游戏画面,scene view 可以看2D 3D hierarchy可以看所有的game object的结构和层次, Project 就可以看所有的资源 ,包括脚本和prefab 还有材质。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Awake 在unity 是啥意思。
在 Unity 中,Awake 和 Start 都是常用的初始化方法,但它们有不同的用途和调用时机:
- Awake:
- 在脚本实例被加载时调用。
- 比
Start方法更早调用,用于初始化数据或状态。 - 即使脚本是禁用状态,只要它附加在一个激活的游戏对象上,
Awake也会被调用。 - 适合用于初始化与其他脚本或对象无关的内容。
- Start:
- 在脚本实例首次启用时调用。
- 比
Awake方法晚调用,用于初始化需要依赖其他脚本或对象的内容。 - 只有在脚本启用时才会调用。
使用 Awake 和 Start 的组合可以确保在适当的时机初始化脚本和对象,从而避免依赖问题和初始化顺序错误。
#匯總今日內容