当前位置:网站首页>unityC#中级语法的相关使用
unityC#中级语法的相关使用
2022-07-13 18:01:00 【MaNongSa】
提示:以下是本篇文章正文内容
范型单例
说明:看不懂范型可以跳到官方范型教学
或者跳到我的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;
}
}
说明:可以在敌人砍下的时候跑到敌人后面,这时候就不会受到攻击!
总结
重点标记性文字设置
具体的标记性正文
具体的标记性正文
具体的标记性正文
具体的标记性正文
具体的标记性正文
具体的标记性正文
边栏推荐
- Leetcode-2 addition of two numbers (head insertion, tail insertion of linked list, addition and subtraction of two linked lists with different lengths)
- 将字符串s1中所有出现在字符串s2中的字符删除
- 桶排序+抽屉原理
- 01.在一个类中写三个监听器
- 关于线程安全
- 硬件课程设计:基于STM32的多功能播放器之系统设计
- Record: vscode connects to Alibaba cloud via SSH
- Chapter VI use of OLED module +stm32
- 树状数组+离散化
- LeetCode精讲——735. 行星碰撞(难度:中等)
猜你喜欢
随机推荐
LeetCode精讲——676. 实现一个魔法字典(难度:中等)
飞机小游戏
基于数组和节点的动态变化(增删改查)
Three handshakes of TCP
动态规划+组合数学
Get started elasticsercher
Gobang (2)
Dynamic changes based on arrays and nodes (addition, deletion, modification and query)
男人要“强”,不要“软”“弱”,“虚”得一匹
RT_ Use of thread mutexes
LeetCode精讲——1252. 奇数值单元格的数目(难度:简单)
Briefly, the process
Leetcode lecture - 1252 Number of odd cells (difficulty: simple)
MySQL——数据页
三分钟上手Markdown——基本语法快速入门
双向链表List类模板的实现
Amd rDNA 3 Navi 31 flagship GPU is said to be packaged in 3D v-cache and up to 384mb cache
Gobang (1)
LeetCode 第十五天
LeetCode精讲——735. 行星碰撞(难度:中等)









