
Unity
Cleve_baby
这个作者很懒,什么都没留下…
展开
-
Unity 3D - 生命周期 :
执行次序:Awake -> Start -> OnEnable -> FixedUpdate -> Update -> LateUpdate -> OnGUI -> Reset -> OnDisable -> OnDestoryAwake:用于在游戏开始之前初始化变量或游戏状态,在脚本整个生命周期内仅被执行一次。Awake在所有游戏对象初始化之后执行,因此可以在方法中安全地与游戏对象进行通信 .Start:仅在所有脚本的Update方法第一次被转载 2021-07-26 14:20:11 · 327 阅读 · 0 评论 -
unity——3d项目知识点笔记
1.Vector3.Normalize():实现规范化,让一个向量保持相同的方向,但它的长度为1.0,如果这个向量太小而不能被规范化,一个零向量将会被返回。2.声明变量:private float aa = 0.5f; 声明常量:private const float aa = 0.5f;3.使用 ForceMode 指定如何使用 Rigidbody.AddForce 来施加力。ForceMode.Acceleration向此刚体添加连续加速度,忽略其质量。ForceMode.Force向此刚原创 2021-07-26 14:20:45 · 375 阅读 · 0 评论 -
广播Observer
(player死亡,manager给enemy发送广播示例)public interface IEndGameObserver { void EndNotify();}//给enemy添加广播using UnityEngine;public class EnemyController : MonoBehaviour,IEndGameObserver{ //每个EnemyController 生成的时候被添加到管理者里面 void OnEnable() {原创 2021-07-26 14:20:26 · 181 阅读 · 0 评论 -
Unity——泛型单例模式
using UnityEngine;public class Singleton<T> : MonoBehaviour where T : Singleton<T>{ private static T instance; private static object syslock = new object(); //线程锁 public static T Instance { get { .原创 2021-07-26 14:20:56 · 565 阅读 · 0 评论 -
Animation中SetBool和SetTrigger的区别
SetBool通常代表对象的一种状态,比如跳跃、跑步等,可以通过GetBool来判断现在是否在这个状态中;而SetTrigger代表当时那一下触发的动画,比如攻击、受伤、死亡等,触发了它们的条件则进行播放。比较概念性,通常情况下都可以使用,区别不大...原创 2021-07-23 15:59:48 · 4495 阅读 · 0 评论 -
不想让public在unity脚本组件上显示--[HideInInspector]
隐藏public变量不在unity中显示:[HideInInspector]在unity中显示标签:[Header("hallo")]原创 2021-07-23 15:52:11 · 1888 阅读 · 1 评论 -
ScriptableObject
(1)在 Assets 下添加菜单,菜单脚本:using UnityEngine;[CreateAssetMenu(fileName = "New Data", menuName = "Character Stats/Data", order = 1)]//!作用在 Assets 文件夹下,鼠标右键,菜单栏中添加一个按钮项,菜单名为 menuName,并执行生成名为 fileName 的脚本,order 为按钮显示顺序public class Attack_SO: ScriptableObje原创 2021-07-23 15:50:48 · 275 阅读 · 0 评论 -
给GameObject绘制一个范围(球形示例)
void OnDrawGizmosSelected() { Gizmos.color = Color.blue; Gizmos.DrawWireSphere(transform.position, maxDistance); //!坐标,范围 }原创 2021-07-23 15:41:11 · 130 阅读 · 0 评论 -
Physics.Raycast理解
方法原型与参数说明其实这个函数有个很藏的很深的地方就是这个layermask, 一般情况我们获取layer的值都会是layermask.nametolayer 这个函数去取得对应的层级,然后把这个int形的参数给到函数使用。但是如果是使用了Physics.Raycast去获取碰撞物的时候,你怎么都获取不到被碰撞的物体。(即使你划线来表示你的射线,也会觉得好像没有任何问题)最后在unity的官方上找到了说明Casting Rays SelectivelyUsing layers you .转载 2021-07-23 15:39:05 · 1611 阅读 · 0 评论 -
Unity函数事件
using System;声明事件AA:public event Action<T> AA调用事件AA添加的方法: AA?.Invoke(T); //如果某个类有添加事件则调用,并传入参数value给事件AA添加方法BB:AA+=BB, public void BB(T){}原创 2021-07-23 15:30:45 · 262 阅读 · 1 评论 -
Unity中协程(IEnumerator)的使用方法介绍
在Unity中,一般的方法都是顺序执行的,一般的方法也都是在一帧中执行完毕的,当我们所写的方法需要耗费一定时间时,便会出现帧率下降,画面卡顿的现象。当我们调用一个方法想要让一个物体缓慢消失时,除了在Update中执行相关操作外,Unity还提供了更加便利的方法,这便是协程。在通常情况下,如果我们想要让一个物体逐渐消失,我们希望方法可以一次调用便可在程序后续执行中实现我们想要的效果。我们希望代码可以写成如下所示:void Fade() { for (float f = 1f; f >转载 2021-07-23 15:25:25 · 2355 阅读 · 0 评论 -
代码判断GameObject有没有component,没有则添加该组件
在挂载AA脚本的GameObject上判断有没有NavMeshAgent组件,没有则添加NavMeshAgent组件,好处是在多个子类的情况下挂载AA脚本就能自动添加该组件。[RequireComponent(typeof(NavMeshAgent))]publicclass AA:MonoBehaviour{}...原创 2021-07-23 15:04:42 · 935 阅读 · 0 评论 -
状态机——示例
枚举:public enum EnemyStates { A,B,C,D}public EnemyStates enemyStates;状态切换:void SwitchStatus(){ switch (enemyStates) { case EnemyStates.A: break; case EnemyStates.B: break; ...原创 2021-07-23 15:00:21 · 230 阅读 · 0 评论 -
Unity 3D - Random类 :
Random类可以用来生成随机数。Random成员变量 :成员变量 说明seed 随机数生成器种子value 返回一个0~1之间随机浮点数,包含0到1insideUnitSphere 返回位于半径为1的球体内的一个随机点(只读)insideUnitCircle 返回位于半径为1的圆内的一个随机点(只读)onUnitSphere 返回半径为1的球面上的一个随机点(只读)rotation 返回一个随机旋转(只读)rotationUniform ...转载 2021-07-23 14:57:54 · 660 阅读 · 0 评论