Unity个人学习笔记

深度搜索

组件Component深度搜索

b.GetComponentInChildren<Text>(true).text = name;

这个语句透露两个信息

  • 第一个,可以使用getcompont获取组件,然后直接赋值,等同于
  • boomName = b.GetComponentInChildren<Text>(true);
  • boomName.text= name;

或者

  • b.GetComponentInChildren<Text>(true).text = name;
  • 第二个,深度搜索GetComponentInChildren<true>

特点:

  • 按照子件下标顺序,寻得第一个
  • 按照子到孙的顺序,寻得一个
  • 即便是未被激活的子物体也会被获取

s

场景物体GameObject深度搜索

GameObject.Find可以搜索到任意深度的物体,用在场景里面的搜索

成功深度搜索

子物体GameObject深度搜索

相机跟随

  • 先安装这个插件,右键创建

  • 拉入跟随对象

  • 加入限制触发器

命名空间namespace

  • 将类纳入一个命名空间,当其他类需要调用的时候,需要using导入改命名空间

  • 下图可看出,未导入命名空间将无法调用BoomManager类

协程

协程IEnumerable是接口,有了这个才可以foreach

IEenumerator也是接口,必须要实现内部抽象方法才能使得继承IEnumerator的类返回成功,继而实现IEnumerable

返回继承IEnumerator的类 == yield return

实例化Instantiate注意事项

物体实例化的开始会取不到物体身上的组件

调用不到b里面的方法或者是rigidbody

所以进入到BulletController中

在awake中获取到组件

延迟销毁

Destroy(gameObject, 2f);延迟两秒销毁

确定物体类型方法

EnemyController ec = collision.gameObject.GetComponent<EnemyController>();

能创建一个类去接受其他物体中的类,是不是证明

也可以Collision cl = other.getComponent<Collision>

State maine

Unity编辑器小技巧

添加这句话可以使得unity窗口添加一行菜单栏

使用这句话可以在Inspector里面加上一行字

给Inspector添加注释

使文字背景和文字框自适应文字数量的方法:

将text放在背景的子物体位置

添加下面两个组件,注意打钩的地方

似乎锚点设置也有影响Pivot

不能引用语句太长否则会处理不到

用OnEnable可以使得函数在每次物体激活的时候调用一次

定义自变量的时候可以加上跟踪链接

这种方法会使得前面的数值会随着后面的数值变化而变化,static不是必须的

nameof可以打印出参数或者函数的名字

[Range(0,1)]面板生成进度条限制输入值

延迟委托函数

引用数据之后切不可再次用等号,否则会重新关联引用,但是可以用引用数据的下面数据

贝塞尔曲线

Unity 贝塞尔曲线实现抛物线运动,投掷功能实现 - 知乎

/// <param name="t">0到1的值,0获取曲线的起点,1获得曲线的终点</param>

/// <param name="start">曲线的起始位置</param>

/// <param name="center">决定曲线形状的控制点</param>

/// <param name="end">曲线的终点</param>

public static Vector3 GetBezierPoint(float t, Vector3 start, Vector3 center,Vector3 end) { return (1 - t) * (1 - t) * start + 2 * t * (1 - t) * center + t * t * end; }

  1. string转枚举

差值运算的使用

DOTween动画

协程定时器

位移运算符

unity编辑器注意事项

不能在物体销毁前调用一些函数,这样会使得这些函数调用失败。

刚刚实例化物体的时候,想要先调用到一某个脚本函数,之后再去调用这个脚本的其他函数的时候,可以吧需要的函数,放在awake里

调用其他函数必然先得发生了awake

射线中的layer Mask

  1. 这个layerMask为二进制,
  2. 而且第六层不是0110,而是100000;
  3. 用layermask.getmask() = 64,100000
  4. 不是layermask.NameToLayer() = 6,0110

这里介绍引入

layout组件的使用

容器适应子物体大小


 

  • 1.content size fitter

  • 2.layout element

子物体

选择preferred会首选长宽

父物体

Image Type图片类型

Simple

Simple类型,顾名思义简单类型,这种类型的image在拉伸过程中,整体会发生均匀形变,并且始终有两个三角面。

Sliced

四个角不会拉伸

Tiled

Tiled是平铺,他会把拉伸部分重复显示,四个角位置除外,在拉伸过程中,也是重复显示的过程

枚举

flag枚举

实例化

MonoBehaviour:引用了该接口的脚本,会自动包含一个base属性,直接new会赋予null

但是可以索引到其他属性不报错

==与equals

unity中,==可以代替equals,

==作用

  1. 对比数值
  2. 引用数据的地址

但是string 和enum在unity中可以当做数值去对比;

取补运算~

既不是非,也不是求补码,而是一个陷阱

c#按位求补(~)_c# 补码函数_TO_ZRG的博客-CSDN博客

位运算符和移位运算符 - 对整数类型中的单个位执行布尔(AND、NOT、OR、XOR)和移位运算 | Microsoft Learn

用这个方法去关闭某一层;

树冲突

SVN 树冲突解决详解

结构体和类的区别(Struct 和 Class)

类中的两个字典,存的是struct 和 class

调用字典里面的值

改变两个值,发现只有在class中的数据能够被检测到。

而且struct的值是不能为null的,就和一个普通的数值一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习Unity3D时,以下是一些重要的笔记: 1. Unity3D基础知识: - 游戏对象(Game Objects)和组件(Components):了解游戏对象的层次结构和组件的作用。 - 场景(Scenes)和摄像机(Cameras):学会如何创建场景并设置摄像机视角。 - 材质(Materials)和纹理(Textures):掌握如何创建和应用材质和纹理。 - 动画(Animations):学习如何创建和控制游戏对象的动画。 2. 脚本编程: - C#语言基础:了解C#语言的基本语法和面向对象编程概念。 - Unity脚本编写:学习如何编写脚本来控制游戏对象的行为和交互。 - 常见组件和功能:掌握常见的Unity组件和功能,如碰撞器(Colliders)、刚体(Rigidbodies)、触发器(Triggers)等。 3. 游戏开发流程: - 设计游戏关卡:了解如何设计游戏场景和关卡,包括布局、道具、敌人等。 - 游戏逻辑实现:将游戏规则和玩家交互转化为代码实现。 - UI界面设计:学习如何设计游戏中的用户界面,包括菜单、计分板等。 - 游戏优化和调试:优化游戏性能,解决常见的错误和问题。 4. 学习资源: - Unity官方文档和教程:官方提供了大量的文档和教程,逐步引导你学习Unity3D。 - 在线教程和视频教程:网上有很多免费和付费的Unity教程和视频教程,可根据自己的需求选择学习。 - 社区论坛和博客:加入Unity开发者社区,与其他开发者交流并获取帮助。 通过系统地学习这些内容,你将能够掌握Unity3D的基础知识并开始开发自己的游戏项目。记得不断实践和尝试,不断提升自己的技能!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值