给一个类成员变量struct赋值.

12.C语言中的struct详解:定义、赋值、指针、嵌套与位字段 本文详细讲解了C语言中struct结构体的使用,包括如何定义和赋值、结构体指针的使用、结构体的嵌套和位字段等高级特性。通过具体示例,解释了如何高效地管理和操作复合数据类型,特别是在需要传递多个相关变量时。此外,讨论了内存对齐、复制与传递结构的注意事项,并介绍了弹性数组成员的实现方法,帮助读者深入理解结构体在C语言中的应用。 阅读详情

SetValue赋值一般变量直接使用,但是struct需要装箱成object再进行就可以了. 不知道行不行

using UnityEngine;
using System.Collections;
using TeamUtility.IO;
using System.Reflection;
using System;

namespace HS.Thinbug.CharControl
{

    /// <summary>
    /// User input for a third person character controller.
    /// </summary>
    public class TBUserControlThird : MonoBehaviour {

        // Input state
        public struct State {
            public Vector3 move;
            public Vector3 lookPos;
            public bool crouch;
            public bool jump;
            public int actionIndex;
        }

        class StateClass
        {
            public State val;
        }

        public bool walkByDefault;        // toggle for walking state
        public bool canCrouch = true;
        public bool canJump = true;

        public State state = new State();           // The current state of the user input
        public State stateLast = new State();           // The current state of the user input

        protected Transform cam;                    // A reference to the main camera in the scenes transform
        GamePlayer hero;
        void Start () {
            // get the transform of the main camera
            cam = Camera.main.transform;
        }

        public void InitControl(GamePlayer h)
        {
            hero = h;
        }

        public void SAGet(ArrayList parm)
        {
            int fieldType = (int)parm[0];
            string field = (string)parm[1];
            object data;
            //state. [field] = (object)parm[1];
            switch (fieldType)
            {
                case 0://如果是bool,那么需要转换下
                    data = (int)parm[2] == 1 ? true : false;
                    break;
                case 1://如果是小数,那么要缩小
                    data = (int)parm[2] * 0.01f;
                    break;
                default:
                    data = parm[2];
                    break;
            }

            object ob = state;
            FieldInfo fi2 = state.GetType().GetField(field);
            fi2.SetValue(ob, data);

            state = (State)ob;

        }

        void checkSendSA()
        {
            if (stateLast.jump != state.jump)
            {
                stateLast.jump = state.jump;
                SA(new ArrayList() { new ArrayList() { 0, "jump", stateLast.jump ? 1 : 0  }, 1 });
            }
            if (stateLast.crouch != state.crouch)
            {
                stateLast.crouch = state.crouch;
                SA(new ArrayList() { new ArrayList() { 0, "crouch", stateLast.crouch ? 1 : 0  }, 1 });
            }
        }

        protected virtual void Update () {
            // read inputs
            state.crouch = canCrouch && InputManager.GetAxisRaw("stun") > 0 ? true : false; //Input.GetKey(KeyCode.C);
            state.jump = canJump && (int)InputManager.GetAxisRaw("Jump")> 0? true :false;// ..GetButton("Jump");

            checkSendSA();

            float h = Input.GetAxisRaw("Horizontal");
            float v = Input.GetAxisRaw("Vertical");

            // calculate move direction
            Vector3 fwd = new Vector3(cam.forward.x, 0f, cam.forward.z).normalized;
            if(fwd != Vector3.zero)
                state.move = Quaternion.LookRotation(fwd) * new Vector3(h, 0f, v);//.normalized;

            bool walkToggle = Input.GetKey(KeyCode.LeftShift);

            // We select appropriate speed based on whether we're walking by default, and whether the walk/run toggle button is pressed:
            float walkMultiplier = (walkByDefault ? walkToggle ? 1 : 0.5f : walkToggle ? 0.5f : 1);

            state.move *= walkMultiplier;


            // calculate the head look target position
            state.lookPos = transform.position + cam.forward * 100f;
        }

        public void SA(ArrayList parm)
        {
            ((HeroPlayer)hero).TosFun("SA", parm);
        }
    }
}

C语言结构体变量——struct 当我们有大量且类型不同的数据需要描述的时候,如果针对每个数据都去定义一个变量或数组,是很消耗时间和内存的,那么如何跟方便的存储大量不同类型的数据呢,这就需要用到结构体变量了 结构体变量——struct是一种构造类型 构造类型:不是基本类型的数据结构也不是指针,它是由若干个相同或不同类型的数据构成的集合。 结构体概念:结构体是一种构造类型的数据结构,是一种或多种基本类型或构造类型的数据的集合 1.结构体类型的定义 结构体类型的定义方法:在使用结构体之前必须先有类型,然后用类型定义数据结构,这个类型相 阅读详情

相关推荐

SystemVerilog struct 5种赋值方式详解:从按名赋值到混合乱炖的实战代码

本文详细解析SystemVerilog结构体(struct)的五种赋值方式,包括按名赋值、整体位置赋值等,通过实战代码展示其在硬件设计与验证中的应用。特别适合处理协议帧、总线事务等场景,提升代码可读性和维护性。

weixin_30460489的博客 352

C语言的几种结构体Struct的赋值方法

C语言的几种几种结构体Struct的初始化方法 1.C11标准下的struct初始化方法 1.1 定义结构体类型时,定义结构体变量 1.2 定义结构体类型后,定义结构体变量 1.3 直接定义结构体变量 这里是定义结构体类型。 #include <stdio.h> struct Init{ int a; double b; char *c; }; 1.1声明时初始化 在声明结构...

qq_34028001的博客 13万+

6-3 根据派生类写出基类(Java解法)(PTA)

主要是看main函数里调用了什么方法和输出样例,一一对应一下有思路再写就很简单.建议使用IDEA自动生成,可以少写很多代码。

u012137663的博客 1142

struct的赋值技巧

为了方便后面的介绍,先定义一个struct类型:        struct User        {            int id;             //id            char name[100];     //user name            char *home;         //homedirectory            int

_tree_ 1万+

正版63棋牌源代码游戏+728游戏全套带前端源代码解析

这俩天抽时间仔细看了一下这套项目包含完整的前端、后端及后台管理系统。从上传的截图可以看出,前端基于资源目录,后端采用和,后台管理界面提供数据查询与管理功能。本篇文章将从前端结构、后端接口、数据库设计、常见 BUG 及优化方法等方面逐步拆解,并给出相应的代码示例和实践经验。

aa2031171的博客 3581

TouchSocket TcpService:构建高性能Tcp服务的终极利器

/ 接收到的数据data");// 回复客户端await ((ITcpSessionClient)client).SendAsync("服务端已收到消息!");// 继续执行后续插件TouchSocket的TCPService以极简的API、强大的扩展性和卓越的性能,重新定义了.NET TCP服务的开发体验。无论是物联网平台还是金融级实时通信系统,TCPService均能提供可靠的基础设施支持。立即探索示例项目,开启你的高性能服务开发之旅!扩展阅读如何实现WebSocket服务?

若汝棋茗 的博客 1461

C语言 | 结构体使用详解

本文更好的排版方式:【C语言笔记】结构体 我们都知道C语言中变量的类型决定了变量存储占用的空间。当我们要使用一个变量保存年龄时可以将其声明为int类型,当我们要使用一个变量保存某一科目的考试成绩时可以将其声明为float。 那么,当我们要做一个学生信息管理系统时,需要保存学生的姓名、学号、年龄等信息,该怎么做呢? 如当要保存三个学生的信息时, 方法一是: char *name1,*name2,...

嵌入式大杂烩 3万+

保姆级避坑指南:用Livox官方工具搞定Mid-360多雷达自动标定(附源码Bug修复)

本文详细解析了使用Livox官方工具进行Mid-360多雷达自动标定的全流程,包括环境搭建、工具链配置、关键Bug修复及数据采集最佳实践。重点解决了PointCloudMapper.cpp边界检查缺失和calibration.cpp点云显示问题,提供了实用的代码修复方案和标定质量评估指标,帮助开发者高效完成激光雷达标定任务。

weixin_29053695的博客 281

c++中结构体struct的初始化和赋值操作

1.结构体的初始化 结构体是常用的自定义构造类型,是一种很常见的数据打包方法。结构体对象的初始化有多种方式,分为指定初始化、顺序初始化、构造函数初始化。假如有如下结构体。 struct A { int b; int c; } (1)指定初始化(Designated Initializer) 实现上有两种方式,一种是通过点号加赋值符号实现,即“.fieldname=value”,另外一种是通过冒...

acoolgiser的博客 3万+

HTML5期末大作业:水果超市网站设计——水果超市(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 网购商城设置网页

HTML5期末大作业:水果超市网站设计——水果超市(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 网购商城设置网页 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业, 可满足大

1714

Linux CentOS 8系统离线升级内核版本

CentOS 8操作系统离线场景下升级内核版本

WQwinter的博客 3237

C++面试100问!(二)

C++那些基础的问题集锦

steem 661

SAP-ABAP:SAP IDOC 全面学习指南

SAP-ABAP:SAP IDOC 全面学习指南

baidu_35680696的博客 1617

C++ struct 初始化与赋值

变量的赋值和初始化是不一样的,初始化是在变量定义的时候完成的,是属于变量定义的一部分,赋值是在变量定义完成之后想改变变量值的时候所采取的操作。的方式进行初始化,使用指定初始化,一个明显的优点是成员初始化顺序和个数可变,并且扩展性好,比如在结构体非末尾处增加字段时,避免了传统顺序初始化带来的大量修改。初始化与赋值有着本质的区别,初始化是变量定义时的第一次赋值,赋值则是定义之后的值的变更操作,概念上不同,所以实现上也不一样。结构体变量的赋值是不能采用大括号的方式进行赋值的,例如下面的赋值是不允许的。

Doublelv 的博客专栏。 17万+

【全局路径规划模块运动学算法】无人机Kinodynamic A*算法、Kinodynamic RRT*算法(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对Kinodynamic A*算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容啃这个Kinodynamic A_star算法,建议先啃一啃高飞fast_planner那篇论文,把理论打好,如果还是比较迷,就先看Dijksta、再看A_star、再看hybrid A_star 三个的流程,因为往上资料比较多,再看这个Kinodynamic A_star算法,流程已经很相像了。如果。

qq_35635374的博客 2603

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

struct类型的赋值

struct 类型变量赋值,一直感觉有危险,畏手畏脚。     #include using namespace std; struct node{ struct addr *ad; node *next; }; struct addr{ char *city; int code; }; int main(){ char *c = "beijing"; cha

成长的足迹 4366

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

struct结构体大小的计算及将char *数组赋值给struct类型

1.struct结构体大小的计算 我已自己的代码为例: typedef unsigned char __u8; typedef unsigned short __u16; typedef unsigned int __u32; typedef unsigned __int64 __u64; typedef __u8 f8_u8; typedef __u16 f8_u16; typedef _...

mengmeng0510的博客 2247

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

go的map中struct赋值问题

首先看下例子如下(可直接执行):package mainimport(    "fmt")type SS struct {    Name string}func main() { ss := SS{        Name: "struct",    } ms := make(map[int]SS)    ms[1] = ss    sp := &amp;SS{        Nam...

ztm521的专栏 4342

指向类成员变量的指针并非指针

参考>的相关章节"指向类成员变量的指针",这个术语中包含了"类成员变量"的术语,但是严格的说,这里的成员变量只是指非静态成员变量,这个术语中还包含了"指针"这个术语,但是严格的说,它即不包含地址,行为也不象指针,说得干脆点,那就是"指向类成员变量的指针"并非指针.尽管这个术语有很大的迷惑性,但是就其含义来说,可以把一组同类型的变量抽象为一个"指向变量的指针",同样的道理,可以把一组类中同类型的类成

oowgsoo的专栏 6199

STRUCT以及VECTOR的赋值问题

 对于相同的struct类型,他们相互之间可以赋值的,测试代码如下:#include#include#includeusing namespace std;struct  bnln{    int a;    int b;};int main(){    struct bnln bnln1;    struct bnln bnln2;        //测试vector    vector  ve

naridts的专栏 3706

struct 结构体中字符串数组赋值的问题

#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct STUDENT { int ID; char Name[64]; char Handle[32]; } STUDENT_INFO; STUDENT_INFO person; i...

MozartCT的博客 4354

关于struct 变量初始化和赋值的问题(vs 环境)

对于在头文件中定义的全局结构数组变量,如何对其进行赋值,对于这个问题,经过我的尝试,我发现,只有一种方法:在main函数定义一个新的变量,然后在通过赋值给它,如果直接对其通过 xxx【x】 = { 。。。}的方式进行赋值,编译报错具体什么原因我暂时也没搞清楚。下面是我使用的测试例子:/*****struct_init.h*******/typedef  struct student{ char name[10]; int age;}stu;stu s[2];/******structInit.c******

wangpeiyao5566的专栏 2954

struct 中部分变量赋值

<br />C 语言中对struct中部分变量命名,见到变量名中带 . 不要惊讶——C变量名是不允许有 . 的<br /> <br /> <br /> <br /> #include <stdio.h> int main(int argc, char *argv[]) { struct s { int a; int b; int c; }; struct s test = { .b =

记录成长的过程 1871

【Objective-C】03-OC对象struct类型成员变量的赋值

当OC对象的成员变量是struct类型时,如果直接用c语言的方式直接赋值就会报错,如s->birthday={1990,12,11};就会抛出错误。有两种方法可以解决这个问题: 一、声明并初始化一个struct类型临时变量,再整个赋值给birthday成员。 二、对birthday成员内部的各个元素分开赋值。 #import //性别枚举 typedef enum{ Sex

HONG321的专栏 3366

matlab向结构体中的数组自动赋值_matlab之结构体数组struct

以下内容来自于:https://blog.csdn.net/u010999396/article/details/54413615/要在MALTAB中实现比较复杂的编程,就不能不用struct类型。而且在MATLAB中实现struct比C中更为方便。1.结构数组的创建MATLAB提供了两种定义结构的方式:直接法和使用struct函数法。1. 使用直接引用方式定义结构与建立数值型数组一样,建立新st...

weixin_39769807的博客 3790
上一篇: 一些看起来不错的Unity资源包
下一篇: 在Unity中避免某个对象的剔除Culling
Thinbug
博客等级 码龄22年 2万+粉丝 187原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinbug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值