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];
    

    这一步确保了数组能够存储 enemiesToSpawnGameObject 元素。

正确的初始化方法

在你的代码中,应该在使用数组之前先初始化它,以便为每个元素分配存储空间。像这样:

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 中,AwakeStart 都是常用的初始化方法,但它们有不同的用途和调用时机:

  • Awake:
    • 在脚本实例被加载时调用。
    • Start 方法更早调用,用于初始化数据或状态。
    • 即使脚本是禁用状态,只要它附加在一个激活的游戏对象上,Awake 也会被调用。
    • 适合用于初始化与其他脚本或对象无关的内容。
  • Start:
    • 在脚本实例首次启用时调用。
    • Awake 方法晚调用,用于初始化需要依赖其他脚本或对象的内容。
    • 只有在脚本启用时才会调用。

使用 AwakeStart 的组合可以确保在适当的时机初始化脚本和对象,从而避免依赖问题和初始化顺序错误。

#匯總今日內容