近期热门
粉丝14
关注 0
获赞 25
神降:死亡游戏 之 创建工程和定义Actor类

[U3D] 神降:死亡游戏 之 创建工程和定义Actor类

 !heats_icon! [复制链接]
1844 7 0 1 8年前 举报
神降:死亡游戏 之 创建工程和定义Actor类
一个游戏开始都是先从一个工程开始的!!当然,小编也不例外哦!!先让我创建一个工程吧!!(这个过程就不用说了吧!)
工程创建完毕后,就是要对工程文件进行规划了,小编的工程目录如下:
Altas:存放图集
Resource:用来存放非加载资源
Resources:用来存放加载资源
Scenes:存放场景
Script:存放脚本
UntiyVS:额 忽略了 用VS的同学肯定会有
首先我在做游戏的时候,首先想到的创建主角,那么我就先来创建角色!!
假设说,我要写一个Actor演员类,是不是应该先写一个Actor类来定义英雄和怪物共有的公共属性,然后在第一个heroActor类来继承Actor类,定义英雄独有属性,然后在定义yuanfengActor类继承heroActor类来编写元风独有属性,然后定义一个MonsterActor类继承Actor ,在写bossActor 和nomalMonsterActor来继承MonsterActor来写怪物的独有属性。结构图如图:
但小编上一章就说过,小编水平有限,所以不这么写了(有兴趣的童鞋自己尝试哈!)。
首先在Script文件夹下创建一个文件夹,名为
其实是Actor(演员呗!)
在Actor下创建脚本Actor
创建这个Actor的作用呢就是在整个游戏中除了NPC以外,都挂载这个脚本。
而这个脚本主要定义什么呢?
不如我们先想想我们主角都有什么呢?
先往小里想:
速度肯定会有吧!血量也会有吧!还得需要一个ID来对游戏中演员进行唯一的标识吧!
另外血量肯定会有当前血量和最大血量吧!万一玩家死亡,还得设置一个属性来表明玩家已经死亡了吧!!
另外既然我们游戏中所有的演员都用同一个脚本 那谁是主角这个我们需要一个标志来表示吧,在加上人物的物理防御,法术防御等等!!当然最重要的一个就是阵营了,如果没有正营 谁知道你是英雄还是怪物啊!!
那Actor就是定义这些东西了!!但是这些东西都定义在Actor中会不会太乱了啊!!我感觉肯定会!所以有分开定义了!!
So,最后这个类的定义如下了:
CampType: 阵营类型  公共枚举类型
ActorType:演员类型 公共枚举类型
ActorInfo: 演员信息 类
#region ActorInfo 演员信息
/// <summary>
/// 主角信息类
/// </summary>
[System.Serializable]
public class ActorInfo
{
    /// <summary>
    /// ID
    /// </summary>
    public int ID;
    public CampType _campType = CampType.Hero;
    /// <summary>
    /// 是否为主角
    /// </summary>
    public bool isMain;
    /// <summary>
    /// 演员类型
    /// </summary>
    public ActorType _actorType;
    /// <summary>
    /// 设置或获取最大HP
    /// </summary>
    public int MaxHP
    {
        get { return _maxHp; }
        set { _maxHp = value; }
    }
    private int _maxHp;
   
    /// <summary>
    /// 获取当前HP
    /// </summary>
    public int GetHP { get { return _hp; } }
    private int _hp;
    /// <summary>
    /// 修改HP
    /// </summary>
    public int ChangeHP
    {
        set
        {
            if (value < 0)
            {
                _hp = 0;
            }
            else
            {
                _hp = value;
            }
        }
    }
    /// <summary>
    /// 是否死亡
    /// </summary>
    public bool IsDie
    {
        get { return _isDie; }
        set
        {
            if(_isDie !=value)
                _isDie = value;
        }
    }
    private bool _isDie;
    /// <summary>
    /// 移动速度
    /// </summary>
    public float speed=1;
    /// <summary>
    /// 跳跃能力
    /// </summary>
    public float jumpingAbility=1;
    /// <summary>
    /// 演员属性信息
    /// </summary>
    public AttributeInfo actorAttributeInfo;
}
#endregion
(笔记本 屏幕太小 没法截图 我还是复制吧)
AttributeInfo:属性信息类
#region AttributeInfo 属性信息
/// <summary>
/// 属性信息
/// </summary>
[System.Serializable]
public class AttributeInfo
{
    /// <summary>
    /// 物理攻击
    /// </summary>
    public float physicalAttack = 1;
    /// <summary>
    /// 物理防御
    /// </summary>
    public float physicalDefence = 1;
    /// <summary>
    /// 魔法攻击
    /// </summary>
    public float magicAttack = 1;
    /// <summary>
    /// 法术防御
    /// </summary>
    public float magicDefence = 1;
    /// <summary>
    /// 暴击率
    /// </summary>
    public float critAttack = 1;
    /// <summary>
    /// 攻击速度
    /// </summary>
    public float attackSpeed = 1;
    /// <summary>
    /// 护甲穿透
    /// </summary>
    public float ArmorPenetration = 1;
    /// <summary>
    /// 魔法穿透
    /// </summary>
    public float MagicPenetration = 1;
}
#endregion
当然,说是定义Actor类可以上都没有定义啊!!不急我们这就来定义:
public class Actor:MonoBehaviour
{
    public ActorInfo _actorInfo;
//public AnimationState _aniState = AnimationState.idle;
}
我去,Actor类就么点内容??
没错就这么点内容!
So,我们来看看挂载英雄上后的效果:
这样看内容就不少了吧!!!
大家注意 ,要先忽略掉AniState 这个属性,这个是后面用到的!!
先来看看为什么呢!!
很简单在ActorInfo中有这么一句:
    /// <summary>
    /// 演员属性信息
    /// </summary>
    public AttributeInfo actorAttributeInfo;
这里定义了一个AttributeInfo类;
而在Actor中定义了一个ActorInfo类;
public AttributeInfo_actorInfo;
如果你也定义这几个类后,在属性面板(他们说的检视面板,我感觉属性面板更合适),却没有出现我这样的状态,注意对比一下,哪个地方有区别?
对比后你也许会发现,在AttributeInfo 和AttributeInfo定义前都一个[System.Serializable]。
这个什么意思小编就不知道了,我只知道这么用,要是童靴们知道什么意思了不如留言或者QQ告诉小编一下,小编先谢过了!!
这样我们Actor类就定义完,但是现在来说都是基础的,在后期的开发中,如果还需要其他属性我们会随时往里添加!!
哎呀12点了,小编要睡觉啦!明天还上班呢!!今天我们说了创建工程和创建角色类,感觉打字讲的速度好慢啊!!!
算了 讲究一下吧!!如果可以明天会出主角控制移动部分的内容,也许会在后几天更新,看看情况吧!!!
希望各位童靴顶顶小编,给小编足够的动力一直做下去!!
如果有想一起研究制作,可以加QQ:3048734340  共同讨论


0
点赞
0
打赏
1
添加到收藏夹

0

点击复制链接

使用微信扫码分享
一次扣10个券
全部评论7
您需要登录后才可以回帖 登录 | 立即注册

好好好好好好好好好
8年前
回复

使用道具 举报

希望能跟CGJOY一起成长。同时也希望CGJOY越办越好。
8年前
回复

使用道具 举报

感谢楼主分享,正是我需要的好东西~~谢谢~
8年前
回复

使用道具 举报

我和我的小伙伴们都惊呆了!
8年前
回复

使用道具 举报

不管你信不信,反正我是信了。
8年前
回复

使用道具 举报

感谢分享
8年前
回复

使用道具 举报

我和我的小伙伴们都惊呆了!
8年前
回复

使用道具 举报