[Unity中文课堂教程] C#中级编程 - 01 - 可读可写属性
Posted L建豪 忄YH
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Unity中文课堂教程] C#中级编程 - 01 - 可读可写属性相关的知识,希望对你有一定的参考价值。
[Unity中文课堂教程] C#中级编程 - 01 - 可读可写属性
原教程视频地址:
《[Unity中文课堂教程预告片] C#中级编程_哔哩哔哩_bilibili》
内容短小精悍简练,每节只有几分钟。很适合用来预习和复习。
主要代码内容
- 当外部需要访问类的私有变量时,一般不会直接将私有变量改为公开变量,而是采用另一个公开变量间接访问。
脚本①如下:(被访问)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Exercise_4_0 : MonoBehaviour
private int him_0 = 0;
public int Him_0 // 命名习惯,第一个字母大写,与原变量第一个字母小写相对应。
get
return him_0;
set
him_0 = value; // 关键字 "value" 代表赋值输入的参数。不要写错成 Him_0
脚本②如下:(要访问)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Exercise_4_1 : MonoBehaviour
void Start()
// Exercise_4_0 him = new Exercise_4_0(); // 脚本①没有继承父类 MonoBehaviour 采用
Exercise_4_0 him = gameObject.AddComponent<Exercise_4_0>(); // 反之,有继承时采用
him.Him_0 = 5;
Debug.Log(him.Him_0);
get
和set
关键字允许设置变量的可读可写属性,同时内部还能像函数一样添加运算和调用其他属性和方法。两个关键字还可以只写其一。
在Unity
中的一些实验
-
脚本①没有需要执行的代码,不需要挂载到对象中也可以。
-
脚本②有需要执行的代码,需要挂载到对象中才可以执行。并可以调用脚本①,即使脚本①没有挂载。
-
脚本①如果没继承父类
MonoBehaviour
,则无法挂载,挂载操作会报错显示无法运行。 -
注意!!脚本①如果有继承父类
MonoBehaviour
,则脚本②调用时需要使用gameObject.AddComponent<>()
。不然运行时会有一个警告,You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed
. 《unity you are trying to create a monobehaviour using the ‘new’ keyword Code Example (codegrepper.com)》 -
注意!!脚本①中的赋值
him_0 = value
,不要写错成Him_0 = value
,会导致循环调用报错:栈溢出。StackOverflowException: The requested operation caused a stack overflow.
《c# - StackOverflowException: The requested operation caused a stack overflow - Stack Overflow》
以上是关于[Unity中文课堂教程] C#中级编程 - 01 - 可读可写属性的主要内容,如果未能解决你的问题,请参考以下文章
[Unity] C#中级编程 - 10 - 命名空间/using