Unity学习问题清单

这篇博客列举了Unity开发中的关键问题,包括初始化顺序控制、异步场景加载、游戏对象持久化、RectTransform属性详解、C#特性如Action和λ表达式、虚函数继承、代码区块分段以及音频处理。此外,还涉及了C#的参数传递方式、协同程序、StartCoroutine和网络通信相关概念。
摘要由CSDN通过智能技术生成

2019/03/16

1.控制游戏各功能初始化顺序的方式:

(1)让各个类继承MonoBehaviour,利用代码控制各功能初始化的顺序(只在GameRoot中Start(),其他类中很少用到Start()、

Awake()等);

(2)利用Unity中Edit->Project Settings->Script Execution Order 控制脚本执行的顺序;

2.加载游戏场景通常使用异步加载,因为场景文件比较大,需要显示一个进度条,所以不适用Resource.Node这样的同步加载方式。

3.当加载一个新场景,发生场景切换时,前一个场景会被销毁,但有些场景不想让其被销毁(需要让这个场景以及它的子物体一直在场景中),如GameRoot(游戏根节点),此时,需要在GameRoot代码Start()方法中加入

DontDestroyOnLoad(this);

来保证其不会被销毁。

4.RectTransform的position、localPosition、anchoredPosition、anchoredPosition3D属性:

(1)position:代表在世界空间的绝对位置;

(2)localPosition:代表相对于父级物体的相对位置;

(3)anchoredPosition和anchoredPosition3D:代表相对于自身的Anchor位置(这两个都可以认为是以像素为单位)。

5.RectTransform的sizeDelta属性

sizeDelta是offsetMax-offsetMin的结果。在锚点全部重合的情况下,它的值就是面板上的(Width,Height),在锚点完全不重合的情况下,它是相对于父矩形的尺寸。

Image.GetComponent<RectTransform>().sizeDelta.x;
Image.GetComponent<RectTransform>().sizeDelta.y;

6.C# 定义一个Action,它是一个委托的命名封装???

7.λ表达式???

using System;
using UnityEngine;
using UnityEngine.SceneManagement;

public class ResSvc : MonoBehaviour 
{
    public static ResSvc Instance = null;    //单例

    public void InitSvc() {
        Instance = this;
        Debug.Log("Init ResSvc...");
    }

    private Action prgCB = null;

    public void AsyncLoadScene(string sceneName) {
        AsyncOperation sceneAsync = SceneManager.LoadSceneAsync(sceneName);
        prgCB = () => {
            float val = sceneAsync.progress;
            GameRoot.Instance.loadingWnd.SetProgress(val);
            if (val == 1) {
                prgCB = null;
                sceneAsync = null;
                GameRoot.Instance.loadingWnd.gameObject.SetActive(false);
            }
        };
    }

    private void Update() {
        if(prgCB != null) {
            prgCB();
        }
    }
}

8.虚函数、继承

9.#region和#endregion

#region是C#中的一个分块预处理指令,主要用于编辑器代码的分块,在编译时会被自动删除,必须以#endregion结尾。

10.AudioClip是一个音频数据容器。它将音频文件压缩为ogg vorbis或不压缩。它被AudioSources引用,并用于播放声音。

11.C#中的out参数、ref参数、params可变参数

(1)out参数:out关键字通过引用来传递参数,在定义方法和调用方法的时候都必须使用out关键字,out可以用来返回多个参数类型。

(2)ref参数:在定义的方法内对其进行处理,再将结果返回,定义方法无需多余的返回类型。

ref参数和out参数的区别:out必须在定义方法内部赋值,ref必须在调用方法之前为其实参赋值。

(3)params可变参数:将实参列表中与可变参数数组类型一致的元素都当作数组的元素处理。params可变参数必须是形参的最后一个参数。

 

2019/03/18

1.协同程序

2.yeild

3.StartCoroutine

 

2019/03/22

1.网络通信

2.高并发的网络通信

3.网络通信模块

4.序列化、反序列化

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值