1. 行为类

类(class)是物体导向程序(objected oriented programming,OOP)的关键组成部分。

functionality>classes>fields & methods

2. 自定义类(Custom Classes)

2.1 自定义类

2.2 序列化自定义类RPG物品数据库示例

public class Item:自定义类“Item”,只是对Item的定义,因此可以删掉monobehaviour。在这个类里定义物体具有的属性。

在Item.cs中建立一个constructor。(constructor可以建立多个,monobehaviour不能建立constructor)

public Item(string name, int id, string description)

在constructor中,利用this.name = name;等将输入的名称赋予物体

Item.cs

ItemDatabase.cs

含有monobehaviour,因为它要挂到一个空物体上。

我们可以引用Item类,并逐一给出不同物体的名称、ID、简介等。但这样非常费事,因此可以在Item.cs中建立一个constructor

建立constructor后,就可以新添物体hammer = new Item("Hammer", 2, "This is a hammer.");

或者,建立一个private void CreateItem(string name, int id, string description)

{

var item = new Item(name, id, description);

如果将private void改为private Item,那么就要加一行return item;

[SerializeField]:让我们可以看到检查器中的自定义类

[System.Serializable]:让该自定义类可读

2.3 何时以及为何使用自定义类

比如在RPG游戏中,会用到大量物品,如果为每个物品创建一个脚本来描述其特征,就会变得很繁冗。

3. 挑战:自定义数据库

Customer.cs

CustomerDatabase.cs

4. RPG咒语系统

Spell.cs

Wizard.cs

数列(arrays)化代码

Spell.cs

Wizard.cs

5. 继承类(Class Inheritence)

5.1 继承类

在物体导向程序中,继承使新物体可以继承已有物体的特性。

Item.cs

Weapon.cs

Consumable.cs

ItemDatabase.cs

5.2 银行系统继承案例

bank.cs

Bankbehaviors.cs

FederalCreditUnions.cs

CreditUnionBehaviors.cs

6. 受保护数据成员

将public改为protected,之后只有继承了该类的成员可以获取它。

7. 虚拟方法与覆盖(overriding)

Pet.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Pet : MonoBehaviour

{

protected string petName;

protected virtual void Speak()

{

Debug.Log("Speak!");

}

private void Start()

{

Speak();

}

}

Duck.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Duck : Pet

{

protected override void Speak()

{

Debug.Log("Quack Quack");

}

}

Dog.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Dog : Pet

{

protected override void Speak()

{

Debug.Log("Bark!");

}

}

8. 关于使用MonoBehaviour自定义类的问答

何时以及为何不使用MonoBehaviour类?

不附加在实际物体上,无需用到其他函数来操作物体的时候,就无需使用MonoBehaviour类。

9. 结构体、记忆管理和值与参考类型

结构体(structs):经常被称为类的增强表现或替代。

普通的类,例如public class Item,支持继承,而struct是不可变的(immutable)。

construct:值类型。普通的类:参考类型。

值类型:bool、bytes、char、doubles、float、int、long、structs,等等。

参考类型:并不直接储存值,而是储存存放值的地址。例如strings、arrays、class、delegates,等等。

class unity 定义类_【Unity学习笔记】C#基础-类(Classes)相关推荐

  1. c++学习笔记之基础---类内声明函数后在类外定义的一种方法

    在C++的"类"中经常遇到这样的函数, 返回值类型名 类名::函数成员名(参数表){ 函数体.} 双冒号的作用 ::域名解析符!返回值类型名 类名::函数成员名(参数表) { 函数 ...

  2. c++学习笔记之基础---类内声明线程函数的调用

    近日需要将线程池封装成C++类,类名为Threadpool.在类的成员函数exec_task中调用pthread_create去启动线程执行例程thread_rounter.编译之后报错如下: spf ...

  3. Unity的VRTK捡拾物体学习笔记

    Unity的VRTK捡拾物体学习笔记 1.VRTK捡拾物体设置: 2.VRTK可交互对象设置: 3.触摸设置: 4.触摸设置2:

  4. Kotlin学习笔记12——数据类和密封类

    Kotlin学习笔记12--数据类和密封类 前言 数据类 在类体中声明的属性 复制 componentN 解构声明 密封类 尾巴 前言 上一篇,我们学习了Kotlin中的拓展,今天继续来学习Kotli ...

  5. JVM学习笔记(Ⅰ):Class类文件结构解析(带你读懂Java字节码,这一篇就够了)

    JVM学习笔记(Ⅰ):Class类文件结构解析,带你读懂Java字节码 前言:本文属于博主个人的学习笔记,博主也是小白.如果有不对的地方希望各位帮忙指出.本文主要还是我的学习总结,因为网上的一些知识分 ...

  6. TS基础1(类型定义、接口)-学习笔记

    文章目录 TS基础1(类型定义.接口)-学习笔记 什么是TS TS基础1(类型定义.接口)-学习笔记 什么是TS //ts用法var n:number = 10;let str:string = '1 ...

  7. Java转义工具类StringEscapeUtils的学习笔记

    Java转义工具类StringEscapeUtils的学习笔记 前言 ​ 在java.commons.lang3 的包中有许多方便好用的工具类,类似于处理字符串的StringUtils,处理日期的Da ...

  8. php基础教学笔记,php学习笔记:基础知识

    php学习笔记:基础知识 2.每行结尾不允许有多余的空格 3.确保文件的命名和调用大小写一致,是由于类Unix系统上面,对大小写是敏感的 4.方法名只允许由字母组成,下划线是不允许的,首字母要小写,其 ...

  9. Docker:学习笔记(1)——基础概念

    Docker:学习笔记(1)--基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...

  10. BGP协议学习笔记——BGP基础

    BGP协议学习笔记--BGP基础(BGP概念.BGP报文.BGP状态机.BGP关系建立.BGP路由通告) 说明:本文学习笔记整理自网络.华为公开产品文档.华为公开PPT及部分的自我理解 一.BGP简介 ...

最新文章

  1. 不是报错就是崩盘,这些代码迁移问题你遇到过几个?
  2. 设定Windows计划任务定期执行PowerShell脚本
  3. Android Studio 点击运行总是debug
  4. 修改归档模式的存档终点 archive log list
  5. 他因为泼了李彦宏一瓶水,成功圈粉无数,成为「网红」
  6. vue 中slot 的具体用法
  7. 深度神经网络中的梯度丢失与梯度爆炸
  8. Linux emacs考场配置及对拍脚本
  9. android 简介动画,android动画简介
  10. html5移动端海报制作,H5制作利器,教你分分钟制作高/大/上H5海报!
  11. (rec)机器人中的语音讲话TTS引擎
  12. 电磁波,无线电,Wifi 4G,摩擦生电
  13. java支付宝提现发请求没反应_支付宝调用页面无法显示
  14. 计算机中丢失aclst16,Win10系统运行CAD2006提示计算机中丢失ac1st16.dll怎么办
  15. 英语foteball足球foteball单词
  16. Java打造RPC框架(二):11个类实现简单Java RPC
  17. 五笔中三个字的词组打法
  18. 华为杯山东理工大学第二届团体程序设计天梯赛
  19. 腾讯撤回的消息在服务器吗,腾讯云IM消息撤回
  20. 无线充电比有线充电更慢吗?

热门文章

  1. 鸿蒙系统非手机用,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  2. android伸缩动画,Android 伸缩动画xml配置
  3. wenbao 与将linux系统(kali)装入U盘
  4. (转)Django ==== 实战学习篇二 需求分析及设计,创建第一个模型---购物车的应用...
  5. 基于FFmpeg的封装格式MP4(TS)
  6. 【个人笔记】OpenCV4 C++ 快速入门 13课
  7. matplotlib快速画图
  8. 心理正常与异常的区分_正常心理与异常心理的区分
  9. springboot图书管理怎么实现借书时间到期提醒_东和店镇第一小学图书数字化管理先进做法...
  10. VS Code 如何运行.html文件(VS Code 如何安装插件)(open with live serve和open in default browser)