[Unity中文课堂教程] C#中级编程 - 01 - 可读可写属性

Posted L建豪 忄YH

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Unity中文课堂教程] C#中级编程 - 01 - 可读可写属性相关的知识,希望对你有一定的参考价值。

[Unity中文课堂教程] C#中级编程 - 01 - 可读可写属性

原教程视频地址:

《[Unity中文课堂教程预告片] C#中级编程_哔哩哔哩_bilibili

C#中级编程 - Unity中文课堂 (u3d.cn)

内容短小精悍简练,每节只有几分钟。很适合用来预习和复习。

主要代码内容

  • 当外部需要访问类的私有变量时,一般不会直接将私有变量改为公开变量,而是采用另一个公开变量间接访问。

脚本①如下:(被访问)

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);
    

  • getset关键字允许设置变量的可读可写属性,同时内部还能像函数一样添加运算和调用其他属性和方法。两个关键字还可以只写其一。

Unity中的一些实验

  1. 脚本①没有需要执行的代码,不需要挂载到对象中也可以。

  2. 脚本②有需要执行的代码,需要挂载到对象中才可以执行。并可以调用脚本①,即使脚本①没有挂载。

  3. 脚本①如果没继承父类MonoBehaviour,则无法挂载,挂载操作会报错显示无法运行。

  4. 注意!!脚本①如果有继承父类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)

  5. 注意!!脚本①中的赋值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#中级编程 - 08 - 接口

[Unity] C#中级编程 - 03 - 重载

[Unity] C#中级编程 - 08 - 接口

[Unity] C#中级编程 - 10 - 命名空间/using

[Unity] C#中级编程 - 10 - 命名空间/using

[Unity] C#中级编程 - 10 - 命名空间/using