第一个软件和第一个游戏

今天做完了第一个软件和第一个游戏,相当有效率……虽然没怎么睡觉,也没怎么务正业……

Login Pannel

第一个软件是用C#做的一个加密记事本。没有做计划,完全是想到哪做到哪,所以到最后结构稍微有点乱了,不过本来就没打算做好,没想到最后做的还比较完美。

Write Board

这个软件实现的几个主要功能是:

  • 账号密码登陆;
  • 自动获取当前日期和今日天气;
  • 每天一份文档,按日期自动保存在软件目录下;
  • 文件内容加密了,只能用这个软件登陆进去看;
  • 只是给自己用的,所以没做设置帐号密码的功能,直接写死在程序里了。

File list

以上,下面说游戏。


说是自己做的第一个游戏,其实是照着教程来的。在这里把一些重要的技术点记录一下:

游戏类型是打飞机。

  • 调用transform比较消耗资源,因此不应在脚本中重复调用,而要声明一个transform类型的引用,然后在void start()里将this.transform赋给它,这样以后直接调用这个transform实例;
  • 控制频率的简单做法是,声明一个float变量用来倒计时,为0时再出发。代码大概是这样:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void Update()
{

    float actionRate = 0.1;

    actionRate -= Time.deltaTime;

    if (actionRate <= 0)
    {
        actionRate = 0.1;
    
        //DoSomething();
    }
}
  • 继承类的时候,void Start()和void Update()不能继承,因此如果要继承这里的行为,就在外面写方法,在里面调用。子类需要在这两个代码块里重复调用。
  • OnTriggerEnter()是专用函数,检验碰撞事件,例如:
1
2
3
4
5
6
7
void OnTriggerEnter (Collider other)
{
    if(other.tag.CompareTo("whatEverYouLike") == 0) //这句表示匹配
    {
        //Do something();
    }
}
  • 添加声音的时候,如果声音播放到一半,带声音的物体被销毁了,声音就立刻停止。因此如果将声音直接加在粒子物体上,那么粒子物体可能会self deconstruct,如果声音比粒子时间长,声音会中断。
  • 播放声音需要有Audio Source,然后才能播放Audio Clip。
  • Instantiate就是Spwan物体。
  • 加载另一个关卡的时候,除了静态数据以外其它物体都会被销毁。另外,可以在Awake中用DontDestroyOnLoad()声明某个不会被删除,然后在这个物体身上放跨越关卡的东西,比如连续播放的音乐。
  • Application.Quit()只有在最终Build版本中才有效,在引擎中测试是无效的。
  • Screen.SetResolution(, , )可以设置启动分辨率。在PC版的project setting中设置分辨率完全没用。

Space War

哦也,碎叫。接下来挑战更复杂一点的项目,一个塔防游戏。不过C#该做个什么东西练练手呢?

留言