Languages & Coding > Unity

Unity Monobehaviour class vs Normal non Monobehaviour class?

(1/2) > >>

I want to make a 3d rasterbar in Unity like I did in agk. Here is the agk code.

--- Code: ---// Project: RasterBar3D
// Created: 2019-09-25

// show all errors

// set window properties
SetWindowTitle( "RasterBar3D" )
SetWindowSize( 768, 768, 0 )
SetWindowAllowResize( 1 ) // allow the user to resize the window

// set display properties
SetVirtualResolution( 768, 768 ) // doesn't have to match the window
SetOrientationAllowed( 1, 1, 1, 1 ) // allow both portrait and landscape on mobile devices
SetSyncRate( 60, 0 ) // 30fps instead of 60 to save battery
SetScissor( 0,0,0,0 ) // use the maximum available screen space, no black borders
UseNewDefaultFonts( 1 ) // since version 2.0.22 we can use nicer default fonts

SetCameraPosition(1, -15, 0, -20)
SetCameraRotation(1, 0, 45, 0)
type Bar
    object as integer
    x as float
    y as float
    z as float
    angle as float
global BarList as Bar[]

TempZ = 0
TempAngle = 0
for xi = 0 to 10
    b as Bar
    b.object = CreateObjectBox(10, 1, 1)
    SetObjectColor(b.object, 255,0,0, 1)
    SetObjectCastShadow(b.object, 1)
    SetObjectReceiveShadow(b.object, 1)   
    b.x = 0
    b.y = 0
    b.z = TempZ
    b.angle = TempAngle
    TempZ = TempZ - 1.1
    TempAngle = TempAngle + 20.0

    if BarList.length <> -1
        for xi = 0 to BarList.length
            SetObjectPosition(BarList[xi].object, BarList[xi].x, BarList[xi].y, BarList[xi].z)
            BarList[xi].y = BarList[xi].y + Cos(BarList[xi].angle) * 1 / 10.0
            BarList[xi].angle = BarList[xi].angle + 2.0
    Print( ScreenFPS() )
--- End code ---
Now, in unity how would I do this? I understand I could have a normal c# class that does this but if it does not derive from monobehaviour then later on if I want to use the unity goodies like collision etc I won't be able to.
In a normal c# class I can use a constructor to create instances using 'new' much like in monkey-x but this can't be done if your class derives from a monobehaviour.
I havent used unity in any decent depth for a long while so I could do with some help.

The way I'd do it as a quick thing would be ( not the most optimised but it'd work - probably would need mono behaviour though ) :

1.. Create a cube the desired parameters you want.
2.. Give that cube a tag called "cube", add a box collider and then make that cube a prefab.
3.. Delete the cube from the scene.
4.. Instantiate as many cube prefabs as needed.
5.. Search for the tag and manipulate as required.

Yeah, I've done that already and it does work. I just wanted to use classes instead. I'm having problems in that if you have a unity class that derives from monobehaviour you can't use 'new' to create new instances like you can in a normal c# class that doesn't derive from monobehaviour.
I could instantiate objects but how do I access fields to assign values when instantiating?

I'm a Unity noob and my knowledge of it is super basic :P - But is this any help?

Yep, that linked helped heaps. Thank you.


[0] Message Index

[#] Next page

Go to full version