- enum: 属于值类型.值类型与引用类型详解
- this : 表示当前类的一个对象
- UI中text可通过添加outline组件来给字加边框
- instantiate(GameObject) : 实例化
- GameObject.transform.SetParent(GameObject) : 作为对象的子物体例如要把Panel放入Canvas下
- ReSource.Load<资源类型>(路径) : 从资源文件夹中直接加载资源
- 接口==>基类==>具体实现类
- 访问权限修饰符
public 公开 类及类成员的修饰符 对访问成员没有级别限制 > public 公开 类及类成员的修饰符 对访问成员没有级别限制
private 私有 类成员的修饰符 只能在类的内部访问
protected 受保护的 类成员的修饰符 只能在该类和该类的派生类中访问,不管该派生类和基类是否在同一程序集中
internal 内部的 类及类成员的修饰符 访问仅限于程序集中
- 音效用数组接的话获取多个组件用GetComponents
- AudioClip 音乐片段
- AudioSource.play() 播放
- AudioSource.Playing 当前正在播放,多用于判断
- AudioSource.PlayOneShot(AudioClip ) 播放一次
- C# 类,只能继承一个父类,但是可实现多个接口。
- 接口: Interface
–接口方法不能用public abstract等修饰。接口内不能有字段变量,构造函数。
–接口内可以定义属性(有get和set的方法)。如string color { get ; set ; }这种。
–实现接口时,必须和接口的格式一致。
–必须实现接口的所有方法。
-
虚方法 virtual 和抽象方法abstract的区别 : 抽象方法是只有定义、没有实际方法体的函数,它只能在抽象函数中出现,并且在子类中必须重写;虚方法则有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。
重写的子类虚函数就是被覆盖了。转:区别 -
base的基本用法转:base
-
代码控制游戏物体在Hierarchy面板的父子关系,位置,比例信息
itemGo.transform.SetParent(canvasTransform,false);//父物体,是否根据父节点改变物体大小信息
itemGo.transform.localPosition = Vector3.zero;//位置
itemGo.transform.localScale = Vector3.one;//比例信息
-
Gam儿Object.SetSiblingIndex(个数) :同级排在第几个的位置
-
延时调用Invoke(“方法名” , 时间)
-
延时重复调用: InvokeRepepeating( );
-
截取字符串:String.Substring (Int startIdex,Int length) 参数为开始截取的下标和最后一位在哪,可以写(length-num)截取0到(length-num)的字符串
-
加载场景不销毁: DontDestoryOnLoad ( GameObject)
-
退出游戏 application.Quit();
-
给按钮添加监听事件: button. onClick.AddListener(事件) 在unity中选中button,Inspector面板下找到On Click()>添加一个>拖入当前button所在挂载脚本的整个预制体==>在第二个框内选择需要监听的方法
-
当前场景状态下激活状态(bool) : GameObject.activeSelf
-
按钮的可交互性,即可不可以响应:在Button的Inspector面板下的Button(Script)==>Interactable
-
滑动条不抖动:
-
像素最优化 image.setNativeSive();
-
OnEnable() 每次激活调用
-
摄像机正交:首先将摄像机Projection选项选为Orthographic,然后将Canvas的 Render Mode更改为Screen Space-Camera,将摄像机拖入Render Camera 中即可.(捕鱼达人粒子特效显示)(正交模式多个Canvas要分层)
-
当需要一个数不断增加来获取数组资源的时候,为防止越界可取其余数为数组的长度,如index =(index + 1)%数组.Length;
-
进度条设置: 1. Background中拖入图片并将Image Type设置为Simple==>Fill中拖入图片将imageType改为Filled,Fill Method改为Horizontal
-
搭UI时如需要分层显示,可建空节点添加Sprite Renderer组件,然后分层,另外Canvas也要注意分层,否则显示不出来.代码实现order in Layer___________gameObject.GetComponent().sortingOrder = 层级数字
-
用StringManager做字符串管理类的时候,要加上const常量标识符.例:public const string zifu = “wwwww”;
-
自身坐标 transform,世界坐标vector3
-
多图快速创建动画片段:保证图片为精灵2D的情况下,多图同时选中,然后拖入Hierarchy面板中,在文件夹内命名然后保存拖进预设的文件夹即可
-
GitHub : 在线代码托管仓库
-
SVN Git : 版本控制工具
-
对比标签:collision.CompareTag(“标签”)
-
随机数:int num = Random.Range(起[可取],止[不可取])
-
延时删除:Destory(gameObject,timer);
-
碰撞触发不可用时,检查is trigger,还有simulated(模拟刚体)是否勾选,还有碰撞框的大小是否没调
-
鼠标滚轮事件
if (Input.GetAxis(“Mouse ScrollWheel”)<0)
{
OnBtnMinusDown();
}
if (Input.GetAxis(“Mouse ScrollWheel”) > 0)
{
OnBtnPlusDown();
} -
单例模式
不继承MonoBehaviour
继承和不继承的写法区别
单例模式
private static GameController instance;//单例模式
//属性访问器,只读
public static GameController Instance
{
get
{
return instance;
}
}
private void Awake()
{
instance = this;
}
- 平移到指定位置 : Vector3.MoveTowards(起点位置,目标位置,时间速度)
- 播放音频,自动生成一个名为"One shot audio"的物体,并自动添加了AudioSource和相应的audioclip,同时播放多个声音时会生成多个同名的物体,各声音的播放互不影响 : AudioSource.PlayClipAtPoint(AudioClip clip,Vector3 position, float volume = 1.0F)
- 查看本机IP : 开始菜单输入cmd==>输入ipconfig==>确认==>IPv4地址即是
- 协同程序和多线程的区别 : 协同程序是可以吧一个函数(routine) 分成几段执行,yield 关键字来等待协同程序的返回,
多线程在多核处理器的环境下能真正并行运行,协同程序任意时刻只有一个代码片段在运行
多线程要考虑线程同步,而协同程序不会,因为任意时刻只有一个协同程序的代码片段在运行
协同函数返回值必须是IEnumerator yield return 来返回 - 静态用类调用,非静态用对象调用.静态全局只有一个
- 图集包的分割:选中图集包,sprite mode更改为Multiple,点击Sprite Editor,在选框
先点第二个,slice下,再点第一个slice一下,最后apply一下就行了 - 图片资源UI要使用的话Texture Type要改为Sprite(2D and UI)
- 图片拉伸不变形,例如背景图四个角图案要不变:选中图集包,sprite mode更改为Multiple,点击Sprite Editor,选中这个图片,加两条线
image type改为sliced - xml注释 : <!- -注释内容- ->
- transform.find与GameObject.find的区别
public static GameObject Find(string name);
适用于整个游戏场景中名字为name的所有处于活跃状态的游戏对象。如果在场景中有多个同名的活跃的游戏对象,在多次运行的时候,结果是固定的。
public Transform Find(string name).gameObject;
适用于查找游戏对象子对象名字为name的游戏对象,不管该游戏对象是否是激活状态,都可以找到。只能是游戏对象直接的子游戏对象。 - 单例基类:继承他就是单例模式,数据一般用单例模式,不继承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()
{
}
}
- GFW中menuform中有一个自定义弹窗,UIform表中调是否遮盖
- 面向对象设计的六大原则
- Slider ,UI血条制作
把主物体的MaxValue调成100,换Background的背景图,把Fill Area和Fill的Transform的left和right值都调成o,即可
- 关掉Unity烘培效果,场景大会卡.
红框内勾掉即可
-
切图工具的使用步骤,工具在百度云内
先将脚本拖入Editor- 选中要切割的图片,texture type 选为default,并勾选Advanced下的read/Write Enabled
- texture type改为sprite(2D and UI),Sprite mode 选为Multiple,apply一下
- Sprite Editor 先选其他的切一下,在选第一个切一下,切割成小图,apply
- 选中图集右键,imageslicer,process to Sprites
- 等待切割完成后就可以在同级目录的同名文件夹下
使用时要把小图Type改为sprite(2D and UI)
-
计时器实现计时器
-
Scroll view滑动视图的使用
滑动视图多图优化,减少实例化等 -
字符串操作字符串操作
-
最好的用法是
-
按钮禁用和变灰
this.GetComponent().enabled = false;//禁用按钮
如果需要将按钮变灰,则需要另外处理
最近才发现一个禁用和变灰的按钮,这几年的代码我踏马真是白写了
this.GetComponent().interactable = false;//禁用和变灰
- 按钮点击变大或还原
gameFriendBtn.transform.localScale = Vector3.one * 1.1f;
addFriendBtn.transform.localScale = Vector3.one;
- EasyTouch5简单教程EasyTouch5简单教程
- C#属性访问器C#属性访问器
- List的用法和排序排序
用法 - easytouchEasyTouch
新手入门
siki学院视频教程 - 单例基类,继承之后为单例模式
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)
{
}