Unity 碎片知识

  1. enum: 属于值类型.值类型与引用类型详解
  2. this : 表示当前类的一个对象
  3. UI中text可通过添加outline组件来给字加边框
  4. instantiate(GameObject) : 实例化
  5. GameObject.transform.SetParent(GameObject) : 作为对象的子物体例如要把Panel放入Canvas下
  6. ReSource.Load<资源类型>(路径) : 从资源文件夹中直接加载资源
  7. 接口==>基类==>具体实现类
  8. 访问权限修饰符

public 公开 类及类成员的修饰符 对访问成员没有级别限制 > public 公开 类及类成员的修饰符 对访问成员没有级别限制
private 私有 类成员的修饰符 只能在类的内部访问
protected 受保护的 类成员的修饰符 只能在该类和该类的派生类中访问,不管该派生类和基类是否在同一程序集中
internal 内部的 类及类成员的修饰符 访问仅限于程序集中

  1. 音效用数组接的话获取多个组件用GetComponents
  2. AudioClip 音乐片段
  3. AudioSource.play() 播放
  4. AudioSource.Playing 当前正在播放,多用于判断
  5. AudioSource.PlayOneShot(AudioClip ) 播放一次
  6. C# 类,只能继承一个父类,但是可实现多个接口。
  7. 接口: Interface

–接口方法不能用public abstract等修饰。接口内不能有字段变量,构造函数。
–接口内可以定义属性(有get和set的方法)。如string color { get ; set ; }这种。
–实现接口时,必须和接口的格式一致。
–必须实现接口的所有方法。

  1. 虚方法 virtual 和抽象方法abstract的区别 : 抽象方法是只有定义、没有实际方法体的函数,它只能在抽象函数中出现,并且在子类中必须重写;虚方法则有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。
    重写的子类虚函数就是被覆盖了。转:区别

  2. base的基本用法转:base

  3. 代码控制游戏物体在Hierarchy面板的父子关系,位置,比例信息

        itemGo.transform.SetParent(canvasTransform,false);//父物体,是否根据父节点改变物体大小信息
        itemGo.transform.localPosition = Vector3.zero;//位置
        itemGo.transform.localScale = Vector3.one;//比例信息
  1. Gam儿Object.SetSiblingIndex(个数) :同级排在第几个的位置

  2. 延时调用Invoke(“方法名” , 时间)

  3. 延时重复调用: InvokeRepepeating( );

  4. 截取字符串:String.Substring (Int startIdex,Int length) 参数为开始截取的下标和最后一位在哪,可以写(length-num)截取0到(length-num)的字符串

  5. 加载场景不销毁: DontDestoryOnLoad ( GameObject)

  6. 退出游戏 application.Quit();

  7. 给按钮添加监听事件: button. onClick.AddListener(事件) 在unity中选中button,Inspector面板下找到On Click()>添加一个>拖入当前button所在挂载脚本的整个预制体==>在第二个框内选择需要监听的方法

  8. 当前场景状态下激活状态(bool) : GameObject.activeSelf

  9. 按钮的可交互性,即可不可以响应:在Button的Inspector面板下的Button(Script)==>Interactable

  10. 滑动条不抖动: 在这里插入图片描述

  11. 像素最优化 image.setNativeSive();

  12. OnEnable() 每次激活调用

  13. 摄像机正交:首先将摄像机Projection选项选为Orthographic,然后将Canvas的 Render Mode更改为Screen Space-Camera,将摄像机拖入Render Camera 中即可.(捕鱼达人粒子特效显示)(正交模式多个Canvas要分层)

  14. 当需要一个数不断增加来获取数组资源的时候,为防止越界可取其余数为数组的长度,如index =(index + 1)%数组.Length;

  15. 进度条设置: 1. Background中拖入图片并将Image Type设置为Simple==>Fill中拖入图片将imageType改为Filled,Fill Method改为Horizontal

  16. 搭UI时如需要分层显示,可建空节点添加Sprite Renderer组件,然后分层,另外Canvas也要注意分层,否则显示不出来.代码实现order in Layer___________gameObject.GetComponent().sortingOrder = 层级数字

  17. 用StringManager做字符串管理类的时候,要加上const常量标识符.例:public const string zifu = “wwwww”;

  18. 自身坐标 transform,世界坐标vector3

  19. 多图快速创建动画片段:保证图片为精灵2D的情况下,多图同时选中,然后拖入Hierarchy面板中,在文件夹内命名然后保存拖进预设的文件夹即可

  20. GitHub : 在线代码托管仓库

  21. SVN Git : 版本控制工具

  22. 对比标签:collision.CompareTag(“标签”)

  23. 随机数:int num = Random.Range(起[可取],止[不可取])

  24. 延时删除:Destory(gameObject,timer);

  25. 碰撞触发不可用时,检查is trigger,还有simulated(模拟刚体)是否勾选,还有碰撞框的大小是否没调

  26. 鼠标滚轮事件
    if (Input.GetAxis(“Mouse ScrollWheel”)<0)
    {
    OnBtnMinusDown();
    }
    if (Input.GetAxis(“Mouse ScrollWheel”) > 0)
    {
    OnBtnPlusDown();
    }

  27. 单例模式
    不继承MonoBehaviour
    继承和不继承的写法区别
    单例模式

    private static GameController instance;//单例模式
    //属性访问器,只读
    public static GameController Instance
    {
        get
        {
            return instance;
        }
    }
    private void Awake()
    {
        instance = this;
    }
  1. 平移到指定位置 : Vector3.MoveTowards(起点位置,目标位置,时间速度)
  2. 播放音频,自动生成一个名为"One shot audio"的物体,并自动添加了AudioSource和相应的audioclip,同时播放多个声音时会生成多个同名的物体,各声音的播放互不影响 : AudioSource.PlayClipAtPoint(AudioClip clip,Vector3 position, float volume = 1.0F)
  3. 查看本机IP : 开始菜单输入cmd==>输入ipconfig==>确认==>IPv4地址即是
  4. 协同程序和多线程的区别 : 协同程序是可以吧一个函数(routine) 分成几段执行,yield 关键字来等待协同程序的返回,
    多线程在多核处理器的环境下能真正并行运行,协同程序任意时刻只有一个代码片段在运行
    多线程要考虑线程同步,而协同程序不会,因为任意时刻只有一个协同程序的代码片段在运行
    协同函数返回值必须是IEnumerator yield return 来返回
  5. 静态用类调用,非静态用对象调用.静态全局只有一个
  6. 图集包的分割:选中图集包,sprite mode更改为Multiple,点击Sprite Editor,在选框在这里插入图片描述
    先点第二个,slice下,再点第一个slice一下,最后apply一下就行了
  7. 图片资源UI要使用的话Texture Type要改为Sprite(2D and UI)
  8. 图片拉伸不变形,例如背景图四个角图案要不变:选中图集包,sprite mode更改为Multiple,点击Sprite Editor,选中这个图片,加两条线
    image type改为sliced在这里插入图片描述
  9. xml注释 : <!- -注释内容- ->
  10. transform.find与GameObject.find的区别
    public static GameObject Find(string name);
    适用于整个游戏场景中名字为name的所有处于活跃状态的游戏对象。如果在场景中有多个同名的活跃的游戏对象,在多次运行的时候,结果是固定的。
    public Transform Find(string name).gameObject;
    适用于查找游戏对象子对象名字为name的游戏对象,不管该游戏对象是否是激活状态,都可以找到。只能是游戏对象直接的子游戏对象。
  11. 单例基类:继承他就是单例模式,数据一般用单例模式,不继承mono继承单例基类.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;

public class Singleton<T> where T : new()
{
    private static T s_singleton = default(T);
    private static object s_objectLock = new object();
    public static T instance
    {
        get
        {
            if (Singleton<T>.s_singleton == null)
            {
                object obj;
                Monitor.Enter(obj = Singleton<T>.s_objectLock);//加锁防止多线程创建单例
                try
                {
                    if (Singleton<T>.s_singleton == null)
                    {
                        Singleton<T>.s_singleton = ((default(T) == null) ? Activator.CreateInstance<T>() : default(T));//创建单例的实例
                    }
                }
                finally
                {
                    Monitor.Exit(obj);
                }
            }
            return Singleton<T>.s_singleton;
        }
    }
    protected Singleton()
    {
    }
}

  1. GFW中menuform中有一个自定义弹窗,UIform表中调是否遮盖
  2. 面向对象设计的六大原则
  3. Slider ,UI血条制作
    在这里插入图片描述

把主物体的MaxValue调成100,换Background的背景图,把Fill Area和Fill的Transform的left和right值都调成o,即可

  1. 关掉Unity烘培效果,场景大会卡.
    在这里插入图片描述

在这里插入图片描述
红框内勾掉即可

  1. 切图工具的使用步骤,工具在百度云内
    先将脚本拖入Editor

    1. 选中要切割的图片,texture type 选为default,并勾选Advanced下的read/Write Enabled
    2. texture type改为sprite(2D and UI),Sprite mode 选为Multiple,apply一下
    3. Sprite Editor 先选其他的切一下,在选第一个切一下,切割成小图,apply
    4. 选中图集右键,imageslicer,process to Sprites
    5. 等待切割完成后就可以在同级目录的同名文件夹下
      使用时要把小图Type改为sprite(2D and UI)
  2. 计时器实现计时器

  3. 改变Text文本字体颜色

  4. Unity几种查找物体的方法

  5. Scroll view滑动视图的使用
    滑动视图多图优化,减少实例化等

  6. 字符串操作字符串操作

  7. 最好的用法是在这里插入图片描述在这里插入图片描述

  8. 按钮禁用和变灰
    this.GetComponent().enabled = false;//禁用按钮
    如果需要将按钮变灰,则需要另外处理

最近才发现一个禁用和变灰的按钮,这几年的代码我踏马真是白写了
this.GetComponent().interactable = false;//禁用和变灰

  1. 按钮点击变大或还原
gameFriendBtn.transform.localScale = Vector3.one * 1.1f;
addFriendBtn.transform.localScale = Vector3.one;
  1. EasyTouch5简单教程EasyTouch5简单教程
  2. C#属性访问器C#属性访问器
  3. List的用法和排序排序
    用法
  4. easytouchEasyTouch
    新手入门
    siki学院视频教程
  5. 单例基类,继承之后为单例模式
using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;

public class Singleton<T> where T : new()
{
    private static T s_singleton = default(T);
    private static object s_objectLock = new object();
    public static T instance
    {
        get
        {
            if (Singleton<T>.s_singleton == null)
            {
                object obj;
                Monitor.Enter(obj = Singleton<T>.s_objectLock);//加锁防止多线程创建单例
                try
                {
                    if (Singleton<T>.s_singleton == null)
                    {
                        Singleton<T>.s_singleton = ((default(T) == null) ? Activator.CreateInstance<T>() : default(T));//创建单例的实例
                    }
                }
                finally
                {
                    Monitor.Exit(obj);
                }
            }
            return Singleton<T>.s_singleton;
        }
    }
    protected Singleton()
    {
    }
}

在这里插入图片描述
75. 动画融合树
融合树
融合树
76. 按钮监听事件传参数 btn.onClick.AddListener(delegate(){方法名(参数); });
或者btn.onClick.AddListener(delegate(参数){方法体; });
兰姆达表达式

private void Start()
    {
        btn.onClick.AddListener(() => { click(1, 2); });
    }
    private void click(int i, int j)
    {
 
    }

  1. 兰姆达表达式详解

  2. iTween与doTween
    doTween
    iTween
    iTween
    doTween官网文档
    doTween

  3. Unity配置安卓环境
    配置环境

  4. ShareSDK集成新浪微博分享与登录
    001
    002

  5. 图集与Alpha通道分离,优化内存自动分离图集
    动态打包图集
    手动打包图集

  6. C#中的数据结构

  7. C#中的接口,接口和抽象类的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值