unityC#中级语法模板
2023-09-11 14:19:57 时间
提示:以下是本篇文章正文内容
范型单例
说明:看不懂范型可以跳到官方范型教学
或者跳到我的C#基础到入门篇里面的范型说明
1、创建
public class Singleson<T> : MonoBehaviour where T :
{
private static T instance;
public static T Instance { get => instance; }
//父类的一个虚方法
protected virtual void Awake()
{
if (instance != null)
Destroy(gameObject);
else
instance = (T)this;
}
//判断是不是空/清楚
protected virtual void OnDestroy()
{
if (instance == this)
{
instance = null;
}
}
//判断单例是否为空
public static bool IsInitialized
{
get { return instance != null; }
}
}
2、使用
public class GameManager : Singleson<GameManager>
{
public int playerStats;
public void RigisterPlayer(int player)
{
playerStats = player;
}
3. 总结
就不用一个一个去创建Instance单例了
想要使用单例就继承Singleson<T>单例类
}
接口的使用
看不懂接口可以跳到官方单例教学
1、创建
public interface IEndGameObsever
{
public void EndObserve();
}
2、使用
public List<IEndGameObsever> endGameObsevers = new List<IEndGameObsever>();
public void AddObserve(IEndGameObsever observer)
{
endGameObsevers.Add(observer);
}
public void RemoveObserve(IEndGameObsever observer)
{
endGameObsevers.Remove(observer);
}
public void NotifyObserver()
{
foreach (var item in endGameObsevers)
{
item.EndObserve();
}
}
3、作用
在特定状态 如死亡就可以调用NotifyObserver通知使用该接口的做一些事情如胜利播放胜利动画等
public void EndObserve()
{
/// < summary >
/// 结束是执行的接口i
/// </ summary >
isWalk = false;
isChase = false;
//执行胜利的动画等等
animator.SetBool("isVictory", true);
attackTarget = null;
isPlayerObserve = true;
}
常用好用的方法
还有跟多好玩方法→→→:可以跳到官方教学
使用代码:
创建一个静态类
public static class ExtensionMethod
{
private const float distance = 0.5f;
public static bool isFacingTarger(this Transform transform, Transform targer)
{
Vector3 diretion = targer.transform.position - transform.position;
diretion.Normalize();
这个方法返是判断攻击的正前方左右0.5有没有敌人,如果在他攻击扣血点还没触发跑到敌人后面就不会受到攻击
var dot = Vector3.Dot(transform.forward, diretion);
return dot > distance;
}
}
说明:可以在敌人砍下的时候跑到敌人后面,这时候就不会受到攻击!
事件委托的脚本
管理事件的脚本📃📃📃
using System;
//简便的事件中心 把所有的数据通过订阅的方式传递到个个代码中
public class EventHandler
{
更新UI事件
//订阅
public static event Action<int, int> UpdateUIEvent;
//呼叫
public static void CallUpdateEvent(int index,int index1)
{
UpdateUIEvent?.Invoke(index, index1);
}
}
使用事件 订阅与注册📃📃📃
订阅事件:
绑定:EventHandler.UpdateUIEvent += OnUpdateUIEvent;
解绑:EventHandler.UpdateUIEvent -= OnUpdateUIEvent;
注册事件:EventHandler.CallUpdateEvent(100,512);
#使用字典、栈、哈希值案例
🐧🐧🐧//字典小仓库 判断游戏是否完成
private Dictionary<string, bool> MiniGameDic = new Dictionary<string, bool>();
private void OnAfterSceneLoadedEvent()//事件切换场景会执行
{
foreach (var item in FindObjectsOfType<MiniGame>())
{
//判断有没有这个名字有就更新判断
if (MiniGameDic.TryGetValue(item.gameName,out bool isPass))
{
item.isPass = isPass;
item.UpdateMiniGameStart();
}
}
}
🐧🐧🐧//栈可以用于对话
🐧🐧🐧//哈希可以用于有一个空位的小游戏,可以记录空位判断其他东西可不可以往那个位子移动
相关文章
- 辛巴学院-Unity-剑英陪你零基础学c#系列(二)顺序
- asp.net RSA密钥之C#格式与Java格式转换(PEM格式)
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
- XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
- 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期
- C#不用union,而是有更好的方式实现 .net自定义错误页面实现 .net自定义错误页面实现升级篇 .net捕捉全局未处理异常的3种方式 一款很不错的FLASH时种插件 关于c#中委托使用小结 WEB网站常见受攻击方式及解决办法 判断URL是否存在 提升高并发量服务器性能解决思路
- C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题
- Word控件Spire.Doc 【文本】教程(8) ;如何在 C#、VB.NET 中的确切位置将文本插入 Word
- C#【必备技能篇】DatagridView添加行时,设置行标题单元格的值为行数
- C#【必备技能篇】ConfigurationManager 类的使用(文件App.config的使用)
- C#,图论与图算法,有向图(Directed Graph)的环(Cycle)的普通判断算法与源代码
- C#,文字排版的折行问题(Word-wrap problem)的算法与源代码
- C#,河豚算法(Blowfish Algorithm)的加密、解密源代码
- 《C#多线程编程实战(原书第2版)》——1.3 暂停线程
- 《C#多线程编程实战(原书第2版)》——2.8 使用Barrier类
- C# Aspose.Word 操作word文档(利用模板)
- [C#] Direct2D 学习笔记 (一)vb.net转换为c#
- C# DataGridView中合并单元格
- 用c#开发微信 (17) 微活动 3 投票活动 (文本投票)
- C#中遍历各类数据集合的方法总结
- Unity ScenarioTemplate脚本C#创建注释模板
- 【模板】并查集简单版模板(路径压缩、按size合并双重优化版,C#)
- 《C#零基础入门之百识百例》(五十七)密封类 -- 任意年月日历输出
- C#之Attribute(特性)
- 【C#】删除集合(Collection)里的元素(Item)
- C# SqlBulkCopy
- c#类的定义,c#中的关健字,C#标识符