真Unity3d_C#基本语法1

其实我写C#有好多年,我也不用太谦虚,估计这里写C#没人比我早,因为我从.net 1.0开始写的

但原来很多语法我都不会,相反一些商业游戏框架里面蕴含的语法,写这些代码的人对C#的掌握程度反而让我惊艳


1.注入

注入的意思就是注入,也不知道怎么解释好,反正JAVA语法直译也就是这个意思

例如下面的代码,其实如果vp_itemPickup这个类需要用到collider这个component的,这样写之后捏,在unity editor添加Component: itemPickup的时候,直接同时会把collider,注入完成(也就是加载的前一刻,加载完成所需前置的类,也就能完全调用前置类的实现方法,而这个前置类不是在unity editor ,而是发起注入的这个源类决定的,甚至是动态决定的, 或者某个配置文件里面写死的, 主要也就是需要加载前一刻才“注入”的效果)

RequireComponent 真的是很棒,相当于注入

其实[]这样的写法,我当时学C#的时候已经是相当于JAVA的注入

C#这么写

[System.Serializable]
public class vp_Item

而Java这么写

@Serializable
public class vp_Item


其实我暂时还不知道System.Serializable有什么用,之前看过好像是序列化之后,UnityEditor能直接用,太晚了今天,所以不好意思,后面再补上吧

[RequireComponent(typeof(SphereCollider))]
[System.Serializable]
public class vp_ItemPickup : MonoBehaviour

我不得不记录下这样的注入写法,注入并不是一个方法或实现,他在C#里真的就是标签 | 特性,并没有具体实现,但就是说明要注入这么一个特性(不止是标签,是一些特性的实现)

/// 
/// 
/// 
public class vp_ItemAmountAttribute : PropertyAttribute
{

	public vp_ItemAmountAttribute()
	{
	}

}

/// 
/// 
/// 
[CustomPropertyDrawer(typeof(vp_ItemAmountAttribute))]
public class vp_ItemAmountDrawer : PropertyDrawer
{
//这里有不少逻辑代码,篇幅问题,没列出来
}


上面的代码对于
vp_ItemAmountAttribute 我的理解就是把
vp_ItemAmountDrawer 注入到 
CustomPropertyDrawer 里
 
  
 
  

2.作用域和虚函数

protected(保护方法)就是所有继承这个类的类都能调用该方法,无法在外部调用,外部类甚至见不到这个方法,

virtual(虚函数)就是继承这个类的类都能重写这个方法,这个类的子类同样能命名方法,如:private void InputAttack(),这个类的这个虚方法就不会被执行,而直接执行子类的InputAttack()方法

protected virtual void InputAttack()
{
	// TIP: 这个方法已经有一个实现了
}




最后,想法就是有这么一个配置问题文件,我需要一个伤害值的计算公式


		瞬刺等级1
		0
		2,5
		0
		0
		0
		0
		0
		2
		1
		30
		0
		0
		0
		0
		0
		0
		skill
		0
		270
		12000
		0
		900
		1
		1000
		0
		1
		1
		
		5
		1
		05
		瞬间移动至目标位置,可以对友方单位使用
		170003
	


看到这么一串数字,其实有点晕,因为这样的配置表还有很多

当然我可以再加几个elements,例如hp attack, physic attack那要再+几个elements才够呢,如果策划又说改攻击力计算公式,是不是又再加elements

所以最好做成一个公式(字串),让他们自己改去吧


大概最后做成

public class SkillManagerConfig
{
	/// 
	/// 后添加的,创伤公式字串
	/// 做成可编程式字串(虽然可能只是替换)
	/// 用entity的物理攻击,法术攻击等替换公式字串的内容
	/// 
	public string affectString;

}




这只是开头,我好像也不记得什么语法能做这个,

正则表达式?

还是Convert.toString?

有知道什么C#语法比较好做这种语法字串(学术上好像叫,语意转换)的小伙伴在么?



如果你想要知道一点C#基本语法,其实1,2本书就够了,包含几乎所有语法,我也可以介绍给你,还是10年前1.0的书


你可能感兴趣的:(每天一点u3d)