欢迎访问欧博网址!

首页快讯正文

威海信息港招聘:Unity 游戏框架搭建 2019 (十八~二十) 概率函数 & GameObject 显示、隐藏简化 & 第二章 小结与快速温习

admin2020-04-154

在笔者刚做项目的时刻,遇到了一个需求。第一个项目是一个跑酷游戏,而跑酷游戏是需要一条一条跑道拼接成的。每个跑道的长度是牢固的,而怪物的泛起位置也是在跑道上牢固好的。那么怪物泛起的概率决议一部分关卡的难度。

以上有点绕,实在就是,到某一个时刻,怪物是否要泛起。而是否要泛起是凭据概率来决议的。若是一个怪物泛起的概率是 100%,那么每次到达跑道牢固的位置时刻都要天生怪物。若是是 80% 那么就有百分之二十的几率不天生怪物。

那么若何去写这个逻辑呢?

我们先剖析一下,我们要输入的是一个概率,而得出的效果呢,是是否要天生怪物。以是我们可以确定下来返回值呢,是一个 bool 值,而输入值呢是一个数字。

而概率用百分比示意相比用 0 ~ 1的概率值示意更容易被明白。而整数的盘算比 float 的盘算性能更好,以是要输入的是一个 0 到 100 区间内的 int 类型。

到这里呢一个方式的输入输出,我们就这样搞定了。

代码如下:

	public static bool Percent(int percent)
	{

	}

到这里,要用到一个随机数天生的 API。UnityEngine.Random.Range(int min,int max)。

完整的逻辑实现如下:

#if UNITY_EDITOR
using UnityEditor;
#endif

using UnityEngine;

namespace QFramework
{
	public class PercentFunction : MonoBehaviour
	{

#if UNITY_EDITOR
		[MenuItem("QFramework/12.概率函数")]
#endif
		private static void MenuClicked()
		{
			Debug.Log(Percent(50));
		}
		
		/// <summary>
		/// 输入百分比返回是否掷中概率
		/// </summary>
		public static bool Percent(int percent)
		{
			return Random.Range (0, 100) <= percent;
		}
	}
}

输出效果为,有一半的概率会输出 true。

效果是准确的。

今天就这些,我们又可以举行导出了。

小结

这篇文章中的示例实在是异常简朴的,然则重点在于一个方式的设计。笔者呢给人人总结如下:

  1. 若是是没掌握的知识,可以先写示例,把示例写出来,写出来之后再去思索示例中的代码哪些是经常更改的,经常更改的值呢可以作为我们要设计的方式的参数。根据这个步骤一个及格的方式就设计出来了。
  2. 若是是已经掌握的知识,这个时刻设计方式的目的大多数是为了实现某个逻辑,好比本篇文章的示例就是此情形,在这种情形下我们要做的固然是对这个逻辑举行一番剖析,要剖析出来可能要用到哪些 API,接着要思索输入什么和输出什么,这些梳理清晰了,一个对照及格的方式就设计出来了。

固然,在以后呢,笔者深入去聊这方面的器械,以是在这里人人只要只管去明白就好,不用到达完全根据以上结论去做。

GameObject 显示、隐藏简化

我们在做项目的时刻,经常会写如下的代码。

gameObject.SetActive(true);
gameObject.SetActive(false);

active 意思是激活,实在是对照贴切的。

一个基于深度学习回环检测模块的简单双目 SLAM 系统

然则笔者是从其他平台转过来的,最初想找到隐藏/显示 GameObject 的时刻有点那么不适应。

像 Cocos2d 的显示是 Visible (可以瞥见的),而 iOS 的则是 Hidden(隐藏),Quick-Cocos2d-x 的则是 Show/Hide 等等,唯独 Unity 叫做 active,对刚接触 Unity 笔者来讲,实在很费解。

以是笔者自然就对 gameObject.active 下手了,用方式封装了一下 Show 和 Hide。

而命名则使用了 Show 和 Hide。

代码如下:

#if UNITY_EDITOR
using UnityEditor;
#endif

using UnityEngine;

namespace QFramework
{
	public class GameObejctActiveImprovements 
	{
#if UNITY_EDITOR
		[MenuItem("QFramework/13.GameObejct 的显示、隐藏简化")]
#endif
		private static void MenuClicked()
		{
			var gameObject = new GameObject();

			Hide(gameObject);
		}

		public static void Show(GameObject gameObj)
		{
			gameObj.SetActive(true);
		}

		public static void Hide(GameObject gameObj)
		{
			gameObj.SetActive(false);
		}
	}
}

这段代码执行之后,会在场景中建立一个隐藏的 GameObject,如下图所示。

OK,今天的内容就这些。

小结

今天的示例代码,看似很简朴,实在对于库的搭建来讲内容对照超前了,为什么这么讲呢?

实际上,今天是对我们的编码体验做了一点优化,而这个编码体验是笔者自己的体验,然则这个呢是要对代码异常敏感或者有大量编码履历的人才会注意到这样一点点细微问题。不外由于代码自己对照简朴,以是对搭建框架或者库的初期对照适合人人实践。

第二章 小结与快速温习

转载请注明地址:凉鞋的条记:liangxiegame.com

更多内容

  • QFramework 地址:https://github.com/liangxiegame/QFramework

  • QQ 交流群:623597263

  • Unity 进阶小班

    • 主要训练内容:
      • 框架搭建训练(第一年)
      • 随着案例学 Shader(第一年)
      • 副业的孵化(第二年、第三年)
    • 权益、授课形式等详细详情请查看《小班产物手册》:https://liangxiegame.com/master/intro
  • 关注民众号:liangxiegame 获取第一时间更新通知及更多的免费内容。

,

Sunbet

菲律宾长滩岛旅游攻略最专业权威的媒体人搜集社会热点资讯,推送内容精准可靠,针对用户个性化需求,整合各界热点专题,以新媒体传播的方式挖掘最新最热门资讯,为您提供您感兴趣的新闻与生活内容, 涵盖了时政、财经、社会、教育、情感等全方位多角度的新闻报道分析,同时开拓您的眼界和思路,让您足不出户就能一揽天下。

转载声明:本站发布文章及版权归原作者所有,转载本站文章请注明文章来源自欧博网址!

本文链接:http://www.cx11yx.cn/post/930.html