小学期项目中遇到的问题

一、遇到的问题

问题1:项目要求有场景渲染

网上找了一下场景渲染应该就是通过添加不同的材质和一些灯光的调整使得场景更加自然的意思。

B站看的这个unity场景制作及渲染

问题2:.场景的SelectIcon太小了看不太清楚

通过调整这个属性
在这里插入图片描述

问题3:项目运行时发现其他窗口不见了,只有一个Game窗口而且是最大化,导致UI变形

因为开启了右边这个Maximize On Play 开启时最大化显示
而且最好一开始就选好左边这个分辨率的比例 这样场景UI可以保持比例不容易变形
在这里插入图片描述

问题4:初步尝试网络请求的问题

由于使用到了一个没有引用的类,按照文章说的上了官网下载
在这里插入图片描述
下载了之后还是报错,发现是并没有添加引用
在这里插入图片描述
在这里插入图片描述
确认了下载了之后,就把它删了重新下载了,发现vs里面是有了引用,可是unity里面没有引用,照样报错
重新到官网下载有dll的文件,重新放进unity里面,后面成功了

	// 定义回调函数 其实就是委托
    delegate void SendRequestCallback(JObject returnData);

    //佛山 101280800
    //两种写法
    private void CallBack(JObject returnData)
    {
    
    

    }

    private void Start()
    {
    
    
        //SendRequestCallback sendRequestCallback = new SendRequestCallback(CallBack); 
        SendRequestCallback sendRequestCallback = delegate (JObject returnData)
        {
    
    
            JObject data = (JObject)returnData["data"];

            Debug.Log(data);

            WeatherControl instance = WeatherControl.Instance;

            instance.humidity = data["shidu"].ToString();
            instance.temperature = data["wendu"].ToString();
            instance.airQuality = data["quality"].ToString();

            instance.windDirection = data["forecast"][0]["fx"].ToString();
            instance.windPower = data["forecast"][0]["fl"].ToString();
            instance.weatherCondition = data["forecast"][0]["type"].ToString();

        };

        //http://t.weather.sojson.com/api/weather/city/101280800
        //http://www.weather.com.cn/data/cityinfo/101280800.html

        StartCoroutine(SendRequest(new JObject(), "http://t.weather.sojson.com/api/weather/city/101280800", sendRequestCallback, "GET"));
    }




    /// <summary>
    /// 本方法将以Json格式向后端发送请求
    /// </summary>
    /// <param name="originJson">要发送的Json对象</param>
    /// <param name="url"></param>
    /// <param name="call">回调函数,不会处理异常,将信息原样返回</param>
    /// <param name="type">可以是"POST"、"GET"等</param>
    IEnumerator SendRequest(JObject originJson, string url, SendRequestCallback callback, string type)
    {
    
    
        // 将JObject转成json字符串
        string sendData = JsonConvert.SerializeObject(originJson);
        // 将字符串使用UTF-8编码成字节流
        byte[] postBytes = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(sendData);


        // 创建UnityWebRequest对象,用以发送请求。使用type指定请求的类型。
        using (UnityWebRequest webRequest = new UnityWebRequest(url, type))
        {
    
    
            // 设置要上传的数据
            webRequest.uploadHandler = (UploadHandler)new UploadHandlerRaw(postBytes);

            // 创建后端返回数据的接收端
            webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();

            // 添加请求头。token是我们项目特有的
            //webRequest.SetRequestHeader("xxx", xxx);

            // 必须要添加Content-Type请求头,明确指定以json形式传输
            webRequest.SetRequestHeader("Content-Type", "application/json");

            // 发送请求,并等待后端返回后继续调用。
            yield return webRequest.SendWebRequest();

            // 当后端炸了,可能返回一个空字符串,对空字符串进行json解析会导致错误
            if (string.IsNullOrEmpty(webRequest.downloadHandler.text))
            {
    
    
                callback(null);
            }
            else
            {
    
    
                // 将后端返回的json字符串转换成一个JObject对象,使用callback传递。
                JObject returnData = JObject.Parse(webRequest.downloadHandler.text);
                callback(returnData);
            }

        }
    }

有用的知识点

1.把生成的物体放进一个物体中 既 设置该物体的父节点

people.transform.parent = peopleParent.transform

2.获取时间

		DateTime time= DateTime.Now;
        string strNowTime = string.Format("{0:D}-{1:D}-{2:D}  {3:D}:{4:D}:{5:D}", time.Year, time.Month, time.Day, time.Hour, time.Minute, time.Second);

3.UI界面上显示播放视频

【Unity】在UI界面上显示播放视频

4.使用Unity自带的版本管理器PlasticSCM

关于Unity的版本控制工具PlasticSCM的初步使用方法

5.使用代码改变场景Lighting属性

		//改变场景中的天空盒
		RenderSettings.skybox = skyBox;
		//改变场景中的lntensity Multiplier  (强度乘数)
        RenderSettings.reflectionIntensity = 0.5f*(index+1);

        //RenderSettings.ambientMode = UnityEngine.Rendering.AmbientMode.Flat;
        RenderSettings.ambientSkyColor = index == 0 ? Color.HSVToRGB(0, 0, 0.2078f) : Color.HSVToRGB(0, 0, 0.9608f);

6.在Hierarchy窗口中点击右键物体的Properties可以开启锁定的该物体的Inspector窗口

在这里插入图片描述

7.DOTween一个很厉害的补间动画插件

可以简单实现一些动画效果,不需要自己写动画控制器,还可以实现一些摄像机的移动,UI的动画等等
详情:DOTween中文详解(持续更新)
缓动曲线:Dotween SetEase Ease缓动函数

8.UniStorm一个蛮好用的天气系统插件

Unity插件之天气系统UniStorm

unity使用UniStorm插件根据当前城市动态修改天气效果

浅用的一些总结:
1.创建的时候要用一个叫做Player标签名也是Player的物体用来存放预制体,而雨雪天气的粒子特效也只会在它附近才能看到
2.控制面板是一个画布预制体和UI公用要调整优先级不然会覆盖
3.控制面板的选项在
4.天气类型的获得是通过自带的天气的对照表的下标获得

猜你喜欢

转载自blog.csdn.net/anxious333/article/details/125579143